728x90
[백준알고리즘] 10816번: 숫자 카드 -Python
https://www.acmicpc.net/problem/10816
이분 탐색 문제이다.
하지만 이전 문제 "1920문제 수 찾기"에서 했듯이 딕셔너리를 이용해서 해결했다.
나는 이렇게만 풀었지만 다른 분들의 코드를 확인하니 직접 Binary Search 방식으로 푸신 분들도 많았고 종종 collections의 Counter 모듈을 이용해서 푸신 분들도 계셨다.
collections의 Counter는 생각지도 못한 방법이었는데 역시 많이 써봐야 다양하게 쓸 줄 아는 것 같다. collections.Counter()의 경우 리스트, 스트링, 딕셔너리 및 다양한 형태의 입력 인자를 허용하는데, 이 문제에서는 리스트로 입력 값을 저장한 뒤에 Counter()로 넘기면 딕셔너리 형태로 개수를 받을 수 있게 된다.
import sys
N = map(int, sys.stdin.readline())
keyList = list(map(int, sys.stdin.readline().split()))
pool = {}
for k in keyList:
if k not in pool:
pool[k] = 1
else:
pool[k] += 1
M = map(int, sys.stdin.readline())
target = list(map(int, sys.stdin.readline().split()))
for t in target:
if t in pool:
sys.stdout.write(str(pool[t]) + " ")
else:
sys.stdout.write("0 ")
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2805번: 나무 자르기 -Python (2) | 2020.01.31 |
---|---|
[백준알고리즘] 1654번: 랜선 자르기 -Python (0) | 2020.01.28 |
[백준알고리즘] 1920번: 수 찾기 -Python (0) | 2020.01.28 |
[백준알고리즘] 2740번: 행렬 곱셈 -Python (0) | 2020.01.27 |
[백준알고리즘] 14888번: 연산자 끼워넣기 -Python (2) | 2020.01.27 |