#39. 백준 3052번 문제 풀이: 나머지 | 문제 원본 보기 |
--입력-- 39 40 41 42 43 44 82 83 84 85 --출력-- 6
이 문제의 풀이 과정은 1. 숫자열의 나머지를 구한다. 2. 나머지들을 저정해 둔다. 3. 나머지들 중에 서로 다른 숫자의 갯수를 구한다. 여기서 핵심은 42로 나눈 나머지라고 했으므로, 나머지의 최대값은 41 이다. 즉 크리가 42인 배열을 만들어 해당 배열인덱스값을 나머지값이라고 가정하여, 해당인덱스 배열의 값을 1로 넣어주면 된다. 최종적으로 배열중에서 1의 값을 가진 배열의 개수가 다른 숫자의 나머지가 된다. 예) 3까지 저장할 수 있는 배열이 있다면. ⓞ ① ② ③ : 배열 인덱스값이 나머지 숫자라 가정한다. [0, 1, 0, 1] : 인덱스 ① , ③ 값이 1이므로, 1 과 3을 나머지라 간주한다. *핵심: 배열의 인덱스값을 숫자값이라고 가정하고 사용하는 알고리즘이 많다.
a = [0]*42
# 나머지 값을 a의 인덱스로 가정해서 저장할 리스트.
# 42로 나누므로 최대값은 41 이므로, 0으로 초기화된 42개 항목의 리스트 생성
for i in range(10): # 10회 루프
v = int(input()) # 숫자를 입력받고 정수로 변환해서 v에 대입
a[v%42] = 1 # a 리스트에서 나머지에 해당하는 항목에 1을 대입
count = 0 # 나머지 갯수 카운터
for i in range(42):
if a[i] == 1: # 나머지가 있는 항목은 카운트
count += 1
print(count) # 카운트(다른 숫자 나머지 갯수) 출력