반응형
문제
https://www.acmicpc.net/problem/6973
해설
처음 입력된 case만큼의 단어 사전을 만드는 문제이다. 각 case는 여러 문장을 입력받고 모든 단어를 단어 사전에 등재한다. 사전에는 등재된 순서대로 단어와 정수를 매핑(e.g. {"text": 1})한다. 그리고 가장 처음 나온 단어는 숫자가 아닌 단어 그대로 표기한다. 각 사전은 single blank line으로 구별되어야 하며, case마다 각각 생성되어야 한다.
EOF error를 예외처리해주지 않아 계속 런타임 에러가 발생했다. ctrl+z, ctrl+c와 같이 사용자 입력을 받아 종료하려 할 때 발생한 것 같다. 처음 풀어보는 알고리즘 문제라 그런지 여기서 시간을 좀 낭비했다.
case = int(input())
for _ in range(case):
word_dict = {}
dict_idx = 1
while True:
try:
sentence = input().split()
if not sentence:
break
words = set(sentence)
for idx, word in enumerate(sentence):
if word in word_dict:
sentence[idx] = word_dict[word]
else:
word_dict[word] = str(dict_idx)
dict_idx += 1
print(" ".join(sentence))
except EOFError:
break
print()
반응형