백준 3052번 나머지
문제
음이 아닌 정수 10개(1,000 이하)가 한 줄에 하나씩 주어진다. 각 수를 42로 나눈 나머지 중 서로 다른 값이 몇 개인지 출력한다. 예를 들어 1부터 10까지가 입력이면 나머지가 모두 달라 10이고, 42, 84, 252 등이면 나머지가 모두 0이라 1이다.
풀이
10개를 입력받자마자 % 42를 적용해 변수에 저장하고, 리스트로 묶는다. 이 리스트를 set()에 넣으면 중복이 사라진다. 다시 list()로 바꾼 뒤 len()으로 개수를 세어 출력한다.
# 10개 다른 수 입력
# 연산 값 중 서로 다른 값이 몇 개 있는지 출력
a = int(input()) % 42
b = int(input()) % 42
c = int(input()) % 42
d = int(input()) % 42
e = int(input()) % 42
f = int(input()) % 42
g = int(input()) % 42
h = int(input()) % 42
i = int(input()) % 42
j = int(input()) % 42
n_li = [a,b,c,d,e,f,g,h,i,j]
set1 = set(n_li)
n_list = list(set1)
size = len(n_list)
print(size)짚고 갈 점
- 변수를 10개 따로 만드는 방식이라 반복문으로 줄일 수 있다.
for나while로 시도하다 막혀서set을 쓰는 방법으로 풀었다. - 집합에도
len()을 바로 쓸 수 있으므로list()로 다시 바꾸는 과정은 없어도 된다.