유형 : 구현
풀이 시간 : 5분
1. 나의 풀이
def solution(nums):
answer = 0
sort = []
for n in nums:
if n not in sort:
sort.append(n)
goal = len(nums) // 2
exist = len(sort)
if goal <= exist:
return goal
else:
return exist
return sort
list를 만들어 중복 없는 폰켓몬 넘버 배열을 만들고, 그것의 길이와 goal 중 min을 return하도록 했다.
코드 최적화를 거치면 아래와 같겠다.
def solution(nums):
answer = 0
sort = []
for n in nums:
if n not in sort:
sort.append(n)
return min(len(nums) // 2, len(sort))
2. set 사용
list에서 중복을 제거하기 위해서는 set을 활용할 수 있다.
def solution(nums):
return min(len(nums) // 2, len(set(nums)))
- s = set() : set 생성
- 순서가 없음
- in : 동일하게 동작
- 원소 추가 : set.add
- update : 여러 개의 데이터 추가
- remove : 제거- discard : 제거하지만 사라져도 keyerror 발생하지 않음
* 복사*dict, set의 ,copy() 는 얕은 복사깊은 복사를 하려면 s = set (t) 와 같은 생성자 이용이 필요함
- | - 합집합 연산자
- & : 교집합 연산자
- - : 차집합 연산자
- ^ : 대칭차집합 연산자(합집합 - 교집합)
- union - 합집
- intersection - 교집합
- difference - 차집합
- symmetric_difference : 대칭차집합 연산자(합집합 - 교집합)
- issubset : 부분집합 여부 확인
- issuperset : issubset과 반대 superset인지 확인
- isdisjoint : 교집합이 없으면 True, 있으면 False
'프로그래머스 > Lv. 1' 카테고리의 다른 글
36. 모의고사 (0) | 2024.07.14 |
---|---|
35. 2016년 (1) | 2024.07.14 |
33. 카드 뭉치 (0) | 2024.07.14 |
32. 콜라 문제 ★ (0) | 2024.07.14 |
31. 두 개 뽑아서 더하기 (itertools - combinations) (0) | 2024.07.14 |