본문 바로가기

# Coding/# 백준

[백준 / 1159] 농구 경기 - Python

728x90
반응형

 

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

 

1159번: 농구 경기

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

www.acmicpc.net

<접근>

입력을 받은 성의 첫 글자를 딕셔너리의 키로 정하고, 해당 글자의 개수를 세어준다. 5글자가 넘으면 저장하여, 저장된 문자가 있으면 문자들을 출력하고, 없으면 'PREDAJA'를 출력한다.

<입력>

N = int(input())

names = {}
for _ in range(N):
    name = input()

 

총 성의 개수 N을 입력받는다. names는 각 성의 첫 글자를 key로 한 글자의 개수를 세어주기 위해 선언해준다. 그리고 각각의 성인 name을 입력받는다.

<정리>

    if name[0] in names:
        names[name[0]] += 1
    else:
        names[name[0]] = 1

 

만약 입력받는 성의 첫 글자가 이미 names에 존재하면 해당 값을 1 증가시킨다. 만약 존재하지 않고 처음 나온 글자라면 해당 key의 값을 1로 선언한다.

<분류>

answer = []
for i in names:
    if names[i] > 4:
        answer.append(i)
answer.sort()

print('PREDAJA' if len(answer) == 0 else ''.join(answer))

 

5개가 넘는 문자를 담을 answer을 선언한다. 만약 names에 있는 문자 중 5개 이상의 글자가 있으면 answer에 추가해준다. 정답은 오름차순으로 출력해야 하니 answer을 정렬해준다.

 

만약 answer의 개수가 0이면 'PREDAJA'를 출력하고, 아닌 경우 해당 문자들을 붙여서 출력한다.

 

<전체 코드>

N = int(input())

names = {}
for _ in range(N):
    name = input()
    if name[0] in names:
        names[name[0]] += 1
    else:
        names[name[0]] = 1

answer = []
for i in names:
    if names[i] > 4:
        answer.append(i)
answer.sort()

print('PREDAJA' if len(answer) == 0 else ''.join(answer))
728x90
반응형

'# Coding > # 백준' 카테고리의 다른 글

[백준 / 1238] 파티 - Python  (0) 2021.03.31
[백준 / 1182] 부분수열의 합 - Python  (0) 2021.03.29
[백준 / 1120] 문자열 - Python  (0) 2021.03.25
[백준 / 1076] 저항 - Python  (0) 2021.03.25
[백준 / 1068] 트리 - Python  (0) 2021.03.25