새소식

⌨️ Algorithms/백준

[Python] 백준 1159번_농구 경기

2023. 5. 11. 19:32

  • -

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

 

1159번: 농구 경기

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

www.acmicpc.net

 

  • 상근이는 내일 경기에 나설 선발 명단을 작성해야 함
  • 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 함
  • 만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권
  • 상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 함
  • 입력
    • 첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어짐
    • 다음 N개 줄에는 각 선수의 성이 주어짐
    • (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자)
  • 출력
    • 상근이가 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA" (따옴표 없이)를 출력
      • PREDAJA는 크로아티아어로 항복을 의미
    • 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

(예제 입력 1) 
18
babic
keksic
boric
bukic
sarmic
balic
kruzic
hrenovkic
beslic
boksic
krafnic
pecivic
klavirkovic
kukumaric
sunkic
kolacic
kovacic
prijestolonasljednikovi
                        -> bk

(예제 입력 2) 
6
michael
jordan
lebron
james
kobe
bryant
        -> PREDAJA
"""

 

 

## 의사코드 ##

# 성의 첫 글자만 리스트에 저장

# 각 성의 첫 글자의 개수 카운트
# from collections import Counter

# 성의 첫 글자를 사전순으로 정렬
# sorted(Counter().items(), key=lambda x: x[0])

# 성의 첫 글자가 같은 선수가 5명 이상이면 성의 첫 글자 추가

 

 

 

 

from collections import Counter
n = int(input())
names = [] # 성의 첫 글자들을 담을 리스트
for _ in range(n):
    name = input()
    # names 리스트에 성의 첫 글자만 담기
    names.append(name[0])
# 각 성의 첫 글자의 개수 카운트
cnt = Counter(names)
# 성의 첫 글자를 사전순으로 정렬
sorted_c = sorted(cnt.items(), key=lambda x: x[0])
res = '' # 선발 가능한 성의 첫 글자들 
# 성의 첫 글자가 같은 선수가 5명 이상이면 성의 첫 글자 추가
for k, v in sorted_c:
    if v >= 5:
        res += k

# 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA"
if res == '':
    print('PREDAJA')
# 선발할 수 있는 경우, 정답 출력
else:
    print(res)
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!