푸르미르

[python]3052.나머지 본문

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은 집합이다. 중복되는 원소들을 보관할 수 없다. 이 적절한 함수를 까먹고 있었다. 

 

www.acmicpc.net/problem/3052

 

'Baekjoon Online Judge' 카테고리의 다른 글

[python]15596.정수 N개의 합  (0) 2021.01.02
[python]4344.평균은 넘겠지  (0) 2021.01.02
[python]2577.숫자의 개수  (0) 2021.01.01
[python]2562.최댓값  (0) 2021.01.01
[python]10818.최소, 최대  (0) 2021.01.01