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로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
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)
n = []
for _ in range(10):
n.append(int(input()) % 42)
n = list(set(n))
n.sort()
print(len(n))
list의 중복 제거를 위해서는 list(set())을 쓰자~