백준 문제 풀이 - 농구 경기 1159번

0

백준문제풀이

목록 보기
59/128

📜 문제 이해하기

상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다.
내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다.
국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 그는 선수의 이름을 기억하지 못하고, 각 선수의 능력도 알지 못한다. 따라서, 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 한다. 만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권하려고 한다.
상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 한다.

💡 문제 재정의

다른 사람들의 이름의 첫 글자가 5개 이상 겹친다면 출력하고 만약 하나도 겹치지 않는다면 PREDAJA를 출력하자.

✏️ 계획 수립

이름을 키로 갖고 겹치는 수를 value를 갖는 dictionary를 사용하면 쉽게 풀 수 있다. 이름이 겹칠 때마다 value를 1씩 올려주고 마지막에 5개 이상인 name을 출력하면 된다.

💻 계획 수행

import sys

if __name__ == '__main__':
    N = int(input())
    name_dict = {}
    result = []

    for _ in range(N):
        name = sys.stdin.readline().rstrip()[0]
        if not name in name_dict.keys():
            name_dict[name] = 1
        else:
            name_dict[name] += 1
            if name_dict[name] == 5:
                result.append(name)

    if result:
        result.sort()
        print(''.join(result))
    else:
        print("PREDAJA")

🤔 회고

python의 dictionary가 유용하게 사용되는 문제였다.

profile
https://github.com/joonyeolsim

0개의 댓글