boj10816-숫자카드2
문제 : 숫자카드2
주어진 리스트 안에 특정 숫자가 몇개 있는지 찾는 문제
- 풀이 1
import sys
from bisect import bisect_left, bisect_right
if __name__ == '__main__':
input = sys.stdin.readline
N = int(input())
card = sorted(list(map(int, input().split())))
M = int(input())
M_list = list(map(int, input().split()))
for m in M_list:
lower_bound = bisect_left(card, m)
upper_bound = bisect_right(card, m)
print(upper_bound-lower_bound)
--> 이진탐색 이용
bisect_left : 정렬된 리스트에서 주어진 숫자가 들어갈 수있는 가장 작은 인덱스 반환 = lower bound
bisect_right : 정렬된 리스트에서 주어진 숫자가 들어갈 수있는 가장 큰 인덱스 반환 = upper bound
- 풀이 2
참고 : journey99 님 풀이
from sys import stdin
N = int(input())
arr_n = list(map(int,stdin.readline().split()))
M = int(input())
arr_m = list(map(int,stdin.readline().split()))
dic = dict()
for i in arr_n:
try :
dic[i] += 1
except:
dic[i] = 1
for i in arr_m:
try:
print(dic[i])
except:
print('0')
--> 계수정렬 이용
dictionary 이용하여 숫자 = key로 두고 개수를 value로 저장
try except 문 사용하여 key 가 이미 있으면 +1 , 없으면 1로 초기화
Author And Source
이 문제에 관하여(boj10816-숫자카드2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dust_potato/boj10816-숫자카드2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)