[python_파이썬_pass]백준_10816번_숫자 카드2_풀이
2024. 5. 11. 20:59ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared
10815번 숫자카드를 풀었다면 이것도 바로 해결할 수 있다.
방법은 동일하다. dict를 활용해서 key값에 해당하는 value값을 불러오면 된다.
단, key값이 없을 경우 error를 어떻게 대응하는지 2가지 방법으로 해결했다.
<첫번째 시도 : 맞았습니다.>
map으로 받을때 리스트로 변환하기 위해서 [map()]이렇게 하면 안된다. 꼭 list(map())으로 하자. => {<map object at 0x000001E243A3ECE0>: 1}
처음에 N_list로 가지고 있는 카드의 숫자를 리스트로 만들어 주고 이걸 dict로 전환한다. 이때 동일한 숫자는 value에 +1을 한다
try except로 M_list를 불러오면서 dict에 key값이 없으면 0을 출력, key값이 있으면 value를 출력하게 한다.
import sys
input = sys.stdin.readline
N = int(input())
N_list = list(map(int, input().split()))
my_get = {}
for i in N_list:
if i in my_get.keys():
my_get[i] += 1
else:
my_get[i] = 1
M = int(input())
M_list = list(map(int, input().split()))
for i in M_list:
try:
print(my_get[i], end = ' ')
except KeyError:
print(0, end = ' ')
<두번째 시도 : 맞았습니다.>
dict.get(매개변수)을 사용하면 error가 발생하지 않고 없는 값이면 None을 발생시켜 if에서는 False로 인식된다.
import sys
input = sys.stdin.readline
N = int(input())
N_list = list(map(int, input().split()))
my_get = {}
for i in N_list:
if i in my_get.keys():
my_get[i] += 1
else:
my_get[i] = 1
M = int(input())
M_list = list(map(int, input().split()))
for i in M_list:
if my_get.get(i):
print(my_get[i], end = ' ')
else:
print(0, end = ' ')
<다른사람풀이 참고>
1. list를 출력할때 print(*[]) : * 전개연산자를 사용하면 for문을 사용하지 않고 바로 출력된다.
ㄴ print(*[d[x] if x in d.keys() else 0 for x in q])
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]백준_1269번_대칭 차집합_풀이 (0) | 2024.05.11 |
---|---|
[python_파이썬_pass_집합 관련 함수 설명]백준_1764번_듣보잡_풀이 (0) | 2024.05.11 |
[python_파이썬]백준_1620번_나는야 포켓몬 마스터 이다솜_풀이 (0) | 2024.05.11 |
[python_파이썬_pass]백준_7785번_회사에 있는 사람_풀이 (0) | 2024.05.11 |
[python_파이썬_pass]백준_14425번_문자열 집합_풀이 (0) | 2024.05.11 |