지나가던 개발자
[Python] 백준 10816번(숫자 카드 2) 문제 풀이 본문
import collections
def binary_search(nums, target):
left, right = 0, len(nums)-1
while left <= right:
mid = (left+right) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
else:
return 1
return 0
input()
have = sorted(list(map(int, input().split(" "))))
have_collection = collections.Counter(have)
input()
cards = list(map(int, input().split(" ")))
for i in cards:
if binary_search(have, i) == 0:
print(0, end=" ")
continue
else:
print(have_collection[i], end=" ")
이진 탐색 알고리즘과 collections.Counter() 함수를 이용해서 만들었다. collections.Counter() 함수는 리스트 내에 들어 있는 요소의 수를 딕셔너리 형태로 반환한다. 예를 들어서, [1, 3, 3, 3, 2, 2]를 {1: 1, 3: 3, 2: 2}의 형태로 주는 식.
'PS > Python' 카테고리의 다른 글
[Python] 백준 5026번(박사 과정) 문제 풀이 (0) | 2022.08.27 |
---|---|
[Python] 백준 9375번(패션왕 신혜빈) 문제 풀이 (0) | 2022.08.27 |
[Python] 백준 9656번(돌 게임 2 문제 풀이) (0) | 2022.07.02 |
[Python] 백준 9655번(돌 게임) 문제 풀이 (0) | 2022.07.02 |
[Python] 백준 1864번(문어 숫자) 문제 풀이 (0) | 2022.06.29 |
Comments