이 문제는 두 가지 방식으로 풀었다.
1) 파이썬의 중복을 허용하지 않는 집합인 set 자료형을 이용하는 방법
2) 숫자를 카운트할 수 있는 list를 만들어 +1씩 하는 방법(출제자의 의도는 이쪽이었을 듯)
1) set 자료형을 이용한 방법
# 3052 나머지
arr = set()
for i in range(10):
n = int(input()) % 42
arr.add(n)
# 중복을 허용하지 않는 set을 만들어서, set의 length만 나중에 세주기.
print(len(arr), end='')
2) List만 이용하는 방법
# 3052 나머지
# 숫자를 카운트 하기 위한 배열이 42개이므로 메모리 차지 많음.
arr = []
numbers = [0 for _ in range(42)]
for i in range(10):
n = int(input()) % 42
if numbers[n] == 0:
numbers[n] += 1
print(sum(numbers), end='')
둘 다 시간은 동일했다. 메모리도 동일하게 나왔다.
list만 이용하는 쪽이 배열에 필요 없는 메모리가 많아서, 더 메모리가 많이 들 것 같다고 생각했는데 아니여서 의외였다.
'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 8958. OX퀴즈 (0) | 2022.07.17 |
---|---|
[백준] 1546. 평균 (0) | 2022.07.17 |
[백준] 2577. 숫자의 개수 (0) | 2022.07.17 |
[백준] 2562. 최댓값 (0) | 2022.07.17 |
[백준] 10818. 최소, 최대(476ms) (0) | 2022.07.15 |