개발 공부/알고리즘 문제풀이

[백준] 3052. 나머지

5묘 2022. 7. 17. 00:12
 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net


이 문제는 두 가지 방식으로 풀었다.


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