[백준/python] 16934 게임 닉네임

박동현·2024년 12월 7일
0

Algorithm

목록 보기
9/11
post-thumbnail
import sys; input = sys.stdin.readline


def insert(word):
    now = trie
    for char in word:
        now = now.setdefault(char, dict())
    now[0] = now.get(0,0)+1

def search(word):
    now = trie
    result = ""
    for char in word:
        result += char
        if char not in now:
            return result
        now = now[char]
    if 0 in now:
        result += str(now[0]+1)
    return result


trie = dict()
for _ in range(int(input())):
    word = input().strip()
    print(search(word))
    insert(word)

제출 결과

트라이

간단히 딕셔너리로 트라이구조를 구현했습니다.

단어를 저장하기 전에 search 함수를 통해 트라이가 존재하는지 확인한 후, 저장되지 않은 지점에서 출력해 정답을 출력합니다.

이후, 트라이에 저장하는 insert 함수를 통해 닉네임을 저장합니다.
0을 통해 단어의 끝을 나타내고, 중복되는 단어는 0에 카운트를 저장해 중복 닉네임을 검출합니다.

profile
동현

0개의 댓글