Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 14425번- '문자열 집합' (PYTHON 풀이) 본문
문제:

사용자로부터 두개값을 입력받는데, 첫번째 입력받는 수만큼 문자열을 입력받아서 집합처럼 묶고, 두번째로 입력받는 수만큼 또 수를 받아서 묶는다. 그리고 두번째로 입력받는 값이랑 처음 집합에 있는 값이랑 비교해서 처음 집합에 있는 값이랑 동일한 게 두번째 입력받는 집합에 존재하면 +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을 올려준다. 이렇게 하면 시간초과도 안나고 더 간단히 풀 수 있다!
'CODING 💻' 카테고리의 다른 글
| 백준 1764번- '듣보잡' (PYTHON 풀이, 문제 해석 O) (0) | 2025.10.15 |
|---|---|
| 백준 1620번- '나는야 포켓몬 마스터 이다솜' (PYTHON 풀이) (0) | 2025.10.14 |
| 백준 7785번- '회사에 있는 사람' (PYTHON 풀이) (0) | 2025.10.12 |
| 백준 10815번- '숫자 카드' (PYTHON 풀이) (0) | 2025.10.11 |
| 백준 18870번- '좌표 압축' (PYTHON 풀이) (0) | 2025.10.10 |
