[백준] - 10816 숫자 카드 2 (Python)

밀루·2023년 8월 7일
0

BOJ

목록 보기
15/43

문제 링크

풀이과정

처음에는 아래와 같이 이중 for문으로 풀었다.

import sys
n=int(sys.stdin.readline().strip())
l1=list(map(int, sys.stdin.readline().strip().split()))
m=int(sys.stdin.readline().strip())
l2=list(map(int, sys.stdin.readline().strip().split()))
result=[]
for i in l2:
    cnt=0
    for j in l1:
        if i==j:
            cnt+=1
    result.append(cnt)
for k in result:
    print(k, end=' ')

그리고 역시나 시간초과.. 흑흑.. 그래서 딕셔너리를 이용해 풀어보았다.

코드

import sys
n=int(sys.stdin.readline().strip())
l1=list(map(int, sys.stdin.readline().strip().split()))
m=int(sys.stdin.readline().strip())
l2=list(map(int, sys.stdin.readline().strip().split()))
l1.sort()

cnt={}
for i in l1:
    if i in cnt:
        cnt[i]+=1 
    else:
        cnt[i]=1 #딕셔니리 추가

for j in l2: #출력
    if j in cnt:
        print(cnt[j], end=' ')
    else:
        print("0", end=' ')

무지성으로 풀지 말고 시간 초과를 최대한 줄일 수 있는 방법을 먼저 생각하고 풀어야할 것 같다..
딕셔너리 넣는 방법 까먹어서 구글링했는데 이것도 조만간 포스팅해야지..

참고 02-5 딕셔너리 자료형
profile
이밀루의 도전

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

훌륭한 글 감사드립니다.

답글 달기