-
[백준] 1159번 농구 경기Algorithm Study/Python 2024. 1. 28. 21:48
https://www.acmicpc.net/problem/1159
풀이
입력받은 리스트를 정렬하여 연속으로 5개 이상 나오는 경우 답에 추가하는 방식으로 구현하려고 했으나
반복문을 돌리면서 본인 첫글자에 해당하는 index에 1씩 더해주는 방법이 더 쉬울 것 같아서 해당 방법으로 구현했다.N = int(input()) data = [] for i in range(N): data.append(input())
N을 입력받은 뒤 N번 반복을 시켜 여러 데이터를 입력 받았다.
check = [0 for _ in range(27)] answer = ""
본인에 해당하는 idx를 표시해주기 위해서 27칸 리스트를 생성했다.
(1 ~ 26까지 사용하기 위하여 27칸 리스트 생성)
a = index 1
b = index 2
c = index 3
....
z = index 26for i in data: check[ord(i[0]) - 96] += 1
문자열의 첫번째 글자를 아스키코드로 변환 후 - 96 (a의 아스키코드는 97) 하여 index 형태로 변경했다.
(26칸 배열을 생성한 뒤 - 97을 하는 쪽이 더 쉬워보였을 것 같다.)for i in range(27): if check[i] >= 5: answer += chr(i+96) if answer == "": print("PREDAJA") else: print(answer)
5가 넘는 index들을 다시 알파벳으로 변환하여 정답으로 출력하였다.
(리스트에 들어있는 숫자가 해당 알파벳이 첫번째로 나온 횟수)전체 코드
N = int(input()) data = [] check = [0 for _ in range(27)] answer = "" for i in range(N): data.append(input()) for i in data: check[ord(i[0]) - 96] += 1 for i in range(27): if check[i] >= 5: answer += chr(i+96) if answer == "": print("PREDAJA") else: print(answer)
복잡한 코드는 아니라 어렵지 않게 풀 수 있을 것 같다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준] 2979번 트럭 주차 (2) 2024.02.27 [백준] 2309번 일곱난쟁이 (1) 2024.02.26 [백준] 10988번 팰린드롬인지 확인하기 (0) 2024.01.28 [백준] 1343번 폴리오미노 (0) 2024.01.16 [백준] 11655번 ROT13 (1) 2024.01.16