3052번: 나머지 - Python

beaver.zip·2022년 2월 23일
0

baekjoon

목록 보기
4/56

https://www.acmicpc.net/problem/3052

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.


풀이 1(오답)

n = []
for _ in range(10):
    n.append(int(input()) % 42)
n.sort()
nd = []
nd.append(n[0])
for i in range(1, 9):
    if n[i] != n[i+1]:
        nd.append(n[i])
if n[8] != n[9]:
    nd.append(n[9])
print(len(nd))

뭔가 난잡하고.. 틀렸다.
여기서는 굳이 nd라는 새로운 list를 만들었고,
list의 중복 제거를 위해 for문을 사용하였는데, i = 0, 9일 때 오류가 나서
나름 예외 처리를 한답시고 저렇게 했는데 틀렸다.

참고로 for문을 통한 list의 중복제거는 다음과 같이 할 수 있다고 한다.

old = [1, 1, 2, 3, 4, 5, 5, 5, 6, 7, 7]
new = []

for n in old:
    if n not in new:
        new.append(n)
print(new)

풀이 2(정답)

n = []
for _ in range(10):
    n.append(int(input()) % 42)
n = list(set(n))
n.sort()
print(len(n))

오늘의 교훈

list의 중복 제거를 위해서는 list(set())을 쓰자~

profile
mv blog velog.io/@beaver_zip

0개의 댓글