문제풀이/BOJ

[Python] BOJ/백준 1159번 농구 경기

서채리 2021. 6. 10. 01:20

[문제]

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

 

1159번: 농구 경기

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

www.acmicpc.net

 


[풀이]

1. count 함수

count 함수는 문자열, 튜플, 리스트, 집합 자료형 내부에서 찾고 싶은 문자의 개수를 찾을 수 있다. 

'변수.count(찾는 요소)' 로 사용하며, 괄호 안에 찾고자 하는 값을 입력하면 변수 안에서 해당 값의 개수를 숫자로 반환한다.

예를 들어 'baekjoon'.count('o') 를 할 경우 출력 값은 2가 나온다.


2. join 함수

- ''.join(리스트)

매개변수로 들어온 리스트가 ['a', 'b', 'c'] 일 때 문자열을 'abc'로 합쳐서 반환해준다.

 

- '구분자'.join(리스트)

리스트의 값과 값 사이에 '구분자'를 넣어 하나의 문자열로 합쳐서 반환해준다.

'+'.join(['a', 'b', 'c']) 일 경우 "a+b+c" 의 문자열 형태로 반환해준다.


선수들 이름의 입력의 첫 번째 문자만 추출해 player_list 에 추가해주고, 중복 값 없애기 위해 player_list를 set 자료형으로 만든 first_name 집합을 만들었다. 

집합 first_name에 있는 요소를 한 개씩 가져와 player_list 에 해당 요소가 몇 개 있는지 count 한 후 그 값이 5보다 크다면 미리 선언해 둔 result 리스트에 담는다.

최종적으로 len(result)가 0이면 "PREDAJA"를 출력하고 0보다 클 경우 리스트에 있는 요소를 합쳐 하나의 문자열로 바꾸어 반환해준다.

 

 

[코드]

if __name__ == '__main__':
    n = int(input())
    player_list = []
    for _ in range(n):
        f = input()
        player_list.append(f[0])

    first_names = set(player_list)
    result = []
    for i in first_names:
        if player_list.count(i) >= 5:
            result.append(i)

    if len(result) > 0:
        print(''.join(sorted(result)))
    else:
        print("PREDAJA")