반응형
내 풀이
1~10줄까지 숫자 주어짐.
42로 나누었을 때, 나머지가 서로 다른 수인게 몇개인지 찾는 문제
results = set()
for _ in range(10):
a = int(input())
a %= 42
results.add(a)
print(len(results))
이 문제는 자료형 중에서 중복을 허용하지 않는 set자료형을 사용하여 문제를 풀었다.
만약에 list 자료형을 쓰면 중복을 허용하기 때문에 값들을 리스트에 넣고 중복을 제거하는 번거로움이 있기 때문에 이를 사용하였다.
결과: 정답
또 다른 풀이
arr = []
for i in range(10):
a = int(input())
if a%42 not in arr:
arr.append(a % 42)
print(len(arr))
이 방법은 not in을 사용하여 값이 리스트에 존재하지 않으면 새로운 값으로 추가하는 방식이다.
고찰
dict에서 중복을 제거하는 방법은 어떻게 될까?
dict는 키에 대해 중복을 허용하지 않기 때문에 dict.fromkeys()를 사용하여 중복된 값을 제거할 수 있다.
위 둘의 중복을 제거하는 코드는 성능 차이는 어떻게 될까?
set()을 사용하면 O(1) 시간 복잡도로 중복을 제거할 수 있지만, not in을 사용한 방법은 매번 리스트를 탐색해야 하므로 O(n) 시간이 걸린다.
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
코딩테스트 14일차(2025.01.30) - 백준1546번(평균) (0) | 2025.01.30 |
---|---|
코딩테스트 14일차(2025.01.30) - 백준10811번(바구니 뒤집기) (0) | 2025.01.30 |
코딩테스트 14일차(2025.01.30) - 백준5597번(과제 안 내신 분..?) (0) | 2025.01.30 |
코딩테스트 13일차(2025.01.29) - 백준10813번(공 바꾸기) (0) | 2025.01.29 |
코딩테스트 12일차(2025.01.28) - 백준10810번(공 넣기) (0) | 2025.01.28 |