알고리즘 문제(SOL)

[백준/1159/파이썬] 농구 경기

https://www.acmicpc.net/problem/1159

 

1159번: 농구 경기

상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작

www.acmicpc.net

Problem

  • 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다.
  • 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 한다.
  • 만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권하려고 한다. 상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 한다.

조건

  • 첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다. 다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)
  • 상근이가 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA" (따옴표 없이)를 출력한다. PREDAJA는 크로아티아어로 항복을 의미한다. 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.

SOL

Dictionary를 이용해서, 세어줬다. 첫글자를 기준으로 숫자를 센 뒤에, ans에 사전순으로 정리한다음, 출력해주면 된다!

import sys
input= sys.stdin.readline

N=int(input().rstrip())
names=[input().rstrip() for _ in range(N)]
player={}
ans=[]
for name in names:
    if player.get(name[0])==None:
        player[name[0]]=1
    else:
        player[name[0]]+=1

for p in player:
    if player[p]>=5:
        ans.append(p)

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