본문 바로가기

카테고리 없음

파이썬) 가희와 키워드 - BOJ

https://www.acmicpc.net/problem/22233

 

22233번: 가희와 키워드

1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을

www.acmicpc.net

이 문제는 중복방지를 위해 set 또는 딕셔너리를 사용해야 했다.

그러나 셋은 키워드의 삭제를 위해 또 다시 반복문을 돌려야했으므로 딕셔너리의 사용이 알맞아 보였다.

import sys
input = sys.stdin.readline

n, m = map(int, input().split())

dic = {}

for _ in range(m):
    st = input().strip()

    st = st.split(',')

    for i in st:
        if i in st:
            dic[i] = 0
    # print(dic)
    result = [key for key, value in dic.items() if value == 1]

    print(len(result))

처음 작성한 코드였다.

보기엔 아무런 문제가 없었으나 result를 구하는 과정에서 시간초과가 발생했다.

import sys
input = sys.stdin.readline

n, m = map(int, input().split())

dic = {}
cnt = 0
for _ in range(n):
    s = input().strip()
    cnt += 1
    dic[s] = 1


for _ in range(m):
    st = input().strip()
    st = st.split(',')

    for j in st:
        if j in dic:
            cnt -= 1
            del dic[j]
    print(cnt)

때문에 cnt라는 변수를 선언하여 대신 카운트를 세도록 하였다.