Baekjoon Online Judge
[python]3052.나머지
((•_•))
2021. 1. 1. 23:47
주어진 10개의 수를 42로 나눈 나머지를 구한 후 이것들 중 서로 다른값이 몇개나 있는지 출력하는 프로그램이다.
이 문제에서 나는 좀 복잡하게 collection모듈의 counter 클래스를 사용했다. (다른 풀이들을 보니 그럴필요가 없음을 깨달았다.)
데이터의 개수를 계산할 때 용이하기 때문에 사용했다.
1
2
3
4
5
6
7
8
9
10
11
|
from collections import Counter
num_list=[] #주어진 숫자의 나머지를 보관하는 리스트
intersection=0 #중복되는게 몇개나 있는지 보관
for i in range(0,10):
a=int(input())
b=a%42
num_list.append(str(b))
result = Counter(num_list).values()
print(len(result))
|
cs |
일반적으로 Counter('abcabb') 이렇게 하면 Counter({'a' : 2, 'b': 3, 'c': 1})이런 key: value 형태의 딕셔너리 형태가 된다. Counter(num_list)를 하면 형태가 Counter({'0' : 몇개, '1': 몇개, '2': 몇개 ........................'41': 몇개}) 이렇게 나올 것이다. 그래서 Counter(num_list).values() 이렇게 해서 values함수를 사용해 주었다. values 함수는 value(값)을 추출하는 함수이다. 그렇게 하면 해당 서로 다른 나머지가 몇 개가 있는지 개수가 나오게 된다.
그런데 이렇게 안해도 된다.
1
2
3
4
|
a=[]
for i in range(10):
a.append(int(input())%42)
print(len(set(a)))
|
cs |
이렇게 set 함수를 써주는 것이다. set은 집합이다. 중복되는 원소들을 보관할 수 없다. 이 적절한 함수를 까먹고 있었다.