jyamethyst21 님의 블로그

백준 14425번- '문자열 집합' (PYTHON 풀이) 본문

CODING 💻

백준 14425번- '문자열 집합' (PYTHON 풀이)

jyamethyst21 2025. 10. 13. 14:10

문제:

 

사용자로부터 두개값을 입력받는데, 첫번째 입력받는 수만큼 문자열을 입력받아서 집합처럼 묶고, 두번째로 입력받는 수만큼 또 수를 받아서 묶는다. 그리고 두번째로 입력받는 값이랑 처음 집합에 있는 값이랑 비교해서 처음 집합에 있는 값이랑 동일한 게 두번째 입력받는 집합에 존재하면 +1 을 해서 마지막에 최종적으로 겹치는게 몇개나 있는지 출력해주면 된다.

 

풀이:

N, M = map(int,input().split())
nlist = []
mlist = []
count = 0

for i in range(N):
    a = input()
    nlist.append(a)
for j in range(M):
    b = input()
    mlist.append(b)

for q in mlist:
    for w in nlist:
        if q == w:
            count+=1
print(count)

이렇게 하면 시간초과가 당연히 나겠지만, 일단 순서대로 적어보았다. 역시나 15% 정도까지 채점중 흘러가다가 시간초과가 떴다.

이중 for문만 안써도 풀 수 있을 것 같아서 고민하다가 아래와 같이 수정하였다.

N, M = map(int,input().split())
nlist = []
count = 0

for i in range(N):
    nlist.append(input())

for j in range(M):
    b = input()
    if b in nlist:
        count += 1
print(count)

훨씬 짧아졌다.

하나의 리스트만 만들어서 거기에 값들을 넣고 새로운 for문을 만들어 입력받은 다음 바로 리스트값과 비교해서 일치하면 count값 1을 올려준다. 이렇게 하면 시간초과도 안나고 더 간단히 풀 수 있다!