[ 백준 문제 3052 / 파이썬 ] 나머지
2023. 2. 8. 15:28ㆍ백준/파이썬
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다.
예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다.
그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
나의 정답 :
import sys
input = sys.stdin.readline
num = []
[ num.append(int(input()) % 42) for i in range(10)]
count_dict = {}
for j in num:
try:
count_dict[j] = +1
except:
count_dict[j] = 1
print(len(count_dict.keys()))
파이썬 리스트 안에 중복되는 원소가 있는지 알려면
요소의 개수를 카운트해줘야합니다.
요소의 개수 카운트 하는 방법
try:
except:
를 이용해줍니다.
에러를 처리할 때만 쓰이는 줄 알았는데,
이럴 때도 쓰입니다.
j에 리스트 값을 차례로 넣어줍니다.
try문과 except문 실행 전의
count_dict 안은 빈 상태라
try문을 만났을때 j라는 key가 count_dict에 없기 때문에
사전 안에서 j라는 key를 못 찾습니다.
그 value를 +1 해줄 수가 없습니다.
예외!로 갑니다.
except 문안에서
묻지도 따지지도 않고
count_dict에 j라는 key가 만들어지고,
그 value는 1이 됩니다.
이런 방식이면, count_dict에 존재하는 key값이 들어오면 (중복되는 key) try문이 실행될 것이고
=> key j의 value가 1 증가
중복되지 않는 새로운 key값이 들어오면 except문이 실행될 것입니다.
=> value가 1인 key j가 새롭게 추가
print(len(count_dict.keys()))
key의 개수를 세주면
문제에서 요구하는 서로 다른 값의 개수를 알 수 있겠죠?
'백준 > 파이썬' 카테고리의 다른 글
[ 백준 문제 8958 / 파이썬 ] OX퀴즈 (0) | 2023.02.08 |
---|---|
[ 백준 문제 1546 / 파이썬 ] 평균 (0) | 2023.02.08 |
[ 백준 문제 5597 / 파이썬 ] 과제 안 내신 분..? (0) | 2023.02.08 |
[ 백준 문제 2562 / 파이썬 ] 최댓값 (0) | 2023.02.08 |
[ 백준 문제 10818 / 파이썬 ] 최소, 최대 (0) | 2023.02.07 |