일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- react native 타입스크립트
- react native typescript navigation
- CSS
- 싸이월드
- react native typescript
- react native
- Expo
- 벡터와 리스트의 차이
- react native accessible
- c++ using
- react
- 리액트 네이티브 맥
- javascript
- react native typescript navigate
- react native mac
- cyworld
- c++ 정보은닉
- react native ios 기기 연결
- unity stencil buffer
- node
- 스탠실 버퍼 튜토리얼
- node.js
- stencil buffer
- C++
- 스탠실 버퍼 시작
- html
- 리액트 네이티브 설치 오류
- react-native
- GitHub
- 스탠실 버퍼 사용
Archives
- Today
- Total
혀니의 이거저거 뿌시기
백준 10816 숫자카드 2 - 딕셔너리 본문
728x90
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
어떤 숫자들에 상근이의 숫자가 몇번이나 포함되었는가를 구하는 문제였는데
보자마자 딕셔너리로 풀어야겠다! 가 떠올랐다.
하지만 계속 시간초과가 나게 되고..
<시간초과 코드>
import sys
N = int(input())
lst = list(map(int, sys.stdin.readline().split()))
M = int(input())
lst2 = list(map(int, sys.stdin.readline().split()))
dic = {}
for j in range(N):
if lst[j] in lst2:
if lst[j] not in dic :
dic[lst[j]] = 1
else:
dic[lst[j]] += 1
print(' '.join(str(dic[i]) if i in dic else '0' for i in lst2))
이 전에도 이중 포문을 돌리거나 여러 방식으로 했었는데 시간초과가 나더라.
내가 보기에는 if in -> 이게 시간복잡도가 큰듯...
<맞은 코드>
import sys
N = int(input())
lst = list(map(int, sys.stdin.readline().split()))
M = int(input())
lst2 = list(map(int, sys.stdin.readline().split()))
dic = {}
for j in range(N):
if lst[j] not in dic :
dic[lst[j]] = 1
else:
dic[lst[j]] += 1
print(' '.join(str(dic[i]) if i in dic else '0' for i in lst2))
이렇게 if in을 한 번만 써서 그때만 dictionary에 요소를 추가하고 그렇지 않을 때에는 그냥 0을 출력하는 식으로 구하면 시간초과가 뜨지 않는다.
딕셔너리의 구조, 접근법을 더 정확히 알고 있으면 한번에 맞출 수 있었을 듯..
print(' '.join(str(dic[i]) if i in dic else '0' for i in lst2))
이런 길지만 한번에 출력 가능한 리스트 컴프리헨션도 익혀두자!
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
백준 2417 정수 제곱근 (0) | 2022.09.03 |
---|---|
백준 1158 요세푸스 문제 - 큐 (0) | 2022.09.03 |
백준 1764 듣보잡 - 차집합 (0) | 2022.09.02 |
백준 2609 최소공배수 최대공약수 (0) | 2022.09.02 |
백준 18870 좌표 압축 - 정렬 (0) | 2022.08.31 |