https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0...
www.acmicpc.net

Code
import sys
input = sys.stdin.readline
n = int(input()) # 10
cards = list(map(int, input().split())) # [6, 3, 2, 10, 10, 10, -10, -10, 7, 3]
m = int(input()) # 8
my_cards = list(map(int, input().split())) # [10, 9, -5, 2, 3, 4, 5, -10]
lst = []
for i in my_cards:
if i in cards:
lst.append(cards.count(i))
else:
lst.append(0)
for j in lst:
print(j, end=" ")
시간을 해결하기 위한 문제이므로 단순히 list의 메소드인 count 를 통해서 문제를 해결하는 것은 적절하지 않은 방법이다.
그러므로 백준에서 통과하지 못했다.
https://www.youtube.com/watch?v=QVoEbcK-eNI
import sys
input = sys.stdin.readline
N = int(input())
a = map(int, input().split())
# 1. hash에 num 개수 반영
hash = {}
for num in a:
# 원래 있는 값을 가져와 달라 num 이라는 키가 존재하면 그 값을 가져오고, num이라는 키가 존재하지 않으면 0 을 반환
hash[num] = hash.setdefault(num, 0) + 1
# hash= {6: 1, 3: 2, 2: 1, 10: 3, -10: 2, 7: 1}
# 2. hash 에서 num 개수 출력
M = int(input())
b = map(int, input().split())
for num in b:
print(hash.setdefault(num, 0), end=' ')
유레카
setdefault: num 이라는 키가 존재하면 그 값을 가져오고, num이라는 키가 존재하지 않으면 0을 반환
'Algorithm > backjoon' 카테고리의 다른 글
백준 파이썬 10814 나이순 정렬 used lambda (0) | 2023.10.08 |
---|---|
백준 파이썬 1181 단어 정렬 used lambda (0) | 2023.10.08 |
백준 파이썬 11651 좌표 정렬하기 2 used lambda (1) | 2023.10.07 |
백준 파이썬 1427 소트인사이드 (0) | 2023.10.06 |
백준 파이썬 2751 수 정렬하기 2 (0) | 2023.10.06 |
댓글