Algorithm
[백준][python]1159 농구경기
soduddl1
2023. 7. 5. 13:00
문제
https://www.acmicpc.net/problem/1159
소스코드
import sys
input = sys.stdin.readline
if __name__ == "__main__":
n = int(input())
dic = {}
for _ in range(n):
name = input().rstrip()
if name[0] not in dic:
dic[name[0]] = 1
else:
dic[name[0]] +=1
res = []
for k,v in dic.items():
if v >= 5:
res.append(k)
if len(res) > 0:
res.sort()
print(''.join(res))
else:
print('PREDAJA')
설명
- 이름을 입력받고, 성의 앞글자를 딕셔너리에 추가한다.
- 딕셔너리를 탐색해서 value 가 5개가 넘으면
- 알파벳 순으로 정렬해서 출력한다.
후기
1등은 비공개이고 2등 소스를 확인해보았다.
시간은 나와 4ms 차이밖에 안나지만 걍 딱 봐도 너무너무 효율이 좋아보였다 ;;
- 입력 자체를 아예 이름의 첫글자만 받았고
- 아스키 코드를 기준으로 for문으로 탐색했다. 이렇게 하면 정렬 할 필요가 없다.
- arr.count(chr(i)) >= 5 로직으로 해당 아스키 코드가 5개가 넘으면 체크해주고 그때그때 출력, 이때 end = '' 써서 이어주었다.
같은 생각이지만 어떻게 푸느냐에 따라 다르게 표현된게 본받을 점인 것 같다.