문제
https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
주요 아이디어
처음에 정렬하는 방법을 생각했는데 그냥 딕셔너리가 더 편한것 같다 (파이썬 한정)
주어진 숫자카드 리스트의 개수를 딕셔너리화하고, 찾아야 하는 num_list 반복문 돌리면서 딕셔너리에서 개수를 가져온다.
매번 비교하며 카운트하는 방법은 시간 초과 뜰 가능성이 높다!
코드 구현 (Python 3)
더보기
N = int(input()) # 숫자카드 개수
card_list = [] # 상근이가 가진 숫자카드 리스트
tmp = input()
card_list = tmp.split()
M = int(input())
tmp = input()
num_list = tmp.split() # number list
# 상근이 dict 생성
card_dict = {}
for card in card_list:
if card not in card_dict.keys():
card_dict[card] = 1
else:
card_dict[card] += 1
for num in num_list:
if num not in card_dict.keys():
print('0 ', end='')
else:
print(str(card_dict[num]) + ' ', end='')
제출 결과
코드 개선 방안
- 딕셔너리 이외의 자료형 (ex. 리스트 등) 만을 사용해서 풀어보자
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 10845. 큐 (0) | 2022.09.07 |
---|---|
[BOJ] 10828. 스택 (0) | 2022.09.07 |
[BOJ] 10814. 나이순 정렬 (0) | 2022.09.07 |
[BOJ] 10250. ACM 호텔 (0) | 2022.09.07 |
[BOJ] 09012. 괄호 (0) | 2022.09.07 |