문제
문제 해석
9개의 동아리 부원들이 백준 문제를 각각 풀었는데,
1. 각 동아리 (최소) 부원 수는 계속 달라지며
2. 각 동아리별로 백준 문제를 가장 많이 푼 사람이 그 동아리의 대표가 되고
3. 동문 커뮤니티 관리자는 모든 동아리 대표 중 가장 많은 문제를 푼 사람이 된다.
4. 단, 여기서 각 동아리의 순서는 고정이다.
문제 풀이
우선 동아리 이름 별로 대표가 존재하고 그 대표가 푼 문제 수가 중요하므로, 동아리 이름과 그 동아리 대표가 푼 문제 수를 묶는 딕셔너리 타입이 적절하다고 판단하였다.
또한 동아리 순서는 고정되어 있으므로 동아리 이름을 리스트(club_name_list)에 넣어두고 반복문 안에서 빈 딕셔너리의 키값을 동아리 이름으로, 그 밸류를 그 동아리 대표가 푼 문제 수로 하여 선언하고자 했다.
그리고 그 반복문 안에서 동시에 이전 인덱스와 비교하여 가장 큰 밸류 값을 지니는 키 값(동아리 이름)을 ans 라는 전역변수에 담아서 출력하면 되겠구나 했다.
코드 전문
# 동아리 이름 club_name_list에 넣어두고
# 빈 딕셔너리 하나 선언
# n 에 부원 수 값 넣어두고
# for idx in range(9): 9개 클럽 돌리기
# list(map(int, input().split()))으로 부원 정보 받음
# 반복문 돌면서 딕셔너리에 D[club_name_list[i]] = max(num_list) 입력
# D[club_name_list[i-1] 과 D[club_name_list[i] 크기 비교하여 이긴놈 ans 에 저장
# print(ans)
club_name_list = ["PROBRAIN", "GROW", "ARGOS", "ADMIN", "ANT", "MOTION", "SPG", "COMON", "ALMIGHTY"]
D = dict()
n = int(input()) # 동아리 부원 수
ans = ""
temp = 0
for idx in range(9):
score_list = list(map(int, input().split()))
D[club_name_list[idx]] = max(score_list)
if D[club_name_list[idx]] > temp:
temp = D[club_name_list[idx]]
ans = club_name_list[idx]
print(ans)
궁금증
동아리 부원 수가 주어지는데 나는 이걸 사용하지 않는 로직으로 푼 거라 꺼림찍하다. 이 것보다 더욱 효율적으로 풀 수 있을 것 같은 느낌이 드는데 지금 봐서는 번뜩이는 아이디어가 생각나지 않는다. 나중에 다시 봐보고 싶다. 아무리 봐도 로직이 마음에 들지 않는다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/C++]2822 점수계산 (0) | 2023.01.11 |
---|---|
[BOJ/C] 10953 A+B-6 (0) | 2023.01.09 |
[백준/python] 10886번: 0 = not cute / 1 = cute (0) | 2023.01.08 |
[백준/C++] 3460 이진수 (0) | 2023.01.08 |
[백준/Python] 2839번: 설탕 배달 (0) | 2023.01.08 |