- 문제 : https://www.acmicpc.net/problem/22233
문제 이해
- 처음 n개의 문자열을 메모장에 저장한 뒤 다음 m개의 문장이 주어지는데, 이때 메모장에 해당하는 단어들을 제거한 뒤 그때그때마다 메모장에 남은 단어 개수를 출력하는 문제다.
- 메모장에 저장하는 단어들은 딕셔너리에 추가한 뒤 m개의 문장을 탐색하면서 아직 제거되지 않은 단어의 개수를 -1 하고, 케이스마다 메모장의 개수를 출력하면 되는 문제다.
- 어렵지 않아서 코드를 작성했는데 계속 4%에서 틀렸다. 그래서 무엇이 문제인고 하니 입력 받는 단어들 중에 공백이 같이 주어지는게 있는데 그거를 제거하지 않아서 문제가 발생한 것 같다.
문자열에서 공백 제거하는 방법은 .rstrip()을 이용하기!
word = input().rstrip()
temp = list(input().rstrip().split(','))
풀이 로직
- n개의 단어를 words라는 딕셔너리에 추가한다. 메모장의 전체 개수는 total에 저장한다.
- 다음 m개의 문장들을 하나씩 입력받은 뒤 문장에서 ' , '로 단어들을 분리해 탐색한다.
- 각 단어가 words에 있고, 개수가 1개라면, 전체 개수를 하나 빼고, 메모장에서도 단어를 제거한다.(words[each] = 0)
- 각 문장마다 메모장에 있는 단어 개수(total)를 출력하면 된다.
정답 풀이
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
words = {}
total = n
for _ in range(n):
word = input().rstrip()
words[word] = 1
for _ in range(m):
temp = list(input().rstrip().split(','))
for each in temp:
if each in words.keys():
if words[each] > 0:
total -= 1
words[each] = 0
print(total)
'백준 > String' 카테고리의 다른 글
[문자열/백준] 4659번 : 비밀번호 발음하기 (0) | 2023.06.15 |
---|---|
[문자열/백준] 9996번 : 한국이 그리울 땐 서버에 접속하지 (0) | 2023.06.15 |
[문자열/백준] 1213번 : 팰린드롬 만들기 (0) | 2023.06.14 |
[문자열/백준] 2607번 : 비슷한 단어 (0) | 2023.06.12 |
[문자열/백준] 2870번 : 수학숙제 (0) | 2023.06.01 |