개인공부/알고리즘
알고리즘 문제 풀이(코딩테스트 문제 1)
lsc99
2023. 10. 28. 17:00
문제 1.


정리
- 투표수(n) 입력 받기
- 1번 ~ 9번(key)에 대한 점수(value)를 가진 딕셔너리(score) 생성
- 계급에 따른 차등점수를 더할 딕셔너리(weight) 생성
- 투표수만큼 반복하면서 계급(grade)와 투표할 후보(can) 입력받기
- 투표한 후보(can)과 일치하는 딕셔너리 score의 key값을 찾아 그 key의 value에 계급(grade)와 일치하는 딕셔너리 (score)의 차등점수(value)를 더한다.
- value값이 가장큰 key값을 찾아 출력
코드
# playdata coding test 1.
n = int(input()) # 투표수
scores = {i:0 for i in range(1,10)} # 1 ~ 9번 후보(key)에 대한 투표점수(value)를 가진 dict 생성
weight = {'A':3, 'B':2, 'C':1} # 계급에 따른 투표의 차등점수 (ex. A계급 -> 3점)
for _ in range(n): # 투표수 만큼 반복
grade, can = input().split() # 계급과 투표할 후보 입력 받기
can = int(can)
scores[can] += weight[grade] # 투표한 후보(can)인 key에 맞는 value에 weight에서 계급(grade)에 매칭되는 value를 더한다.
max_can = max(scores, key=scores.get) # value값이 제일 큰 value의 key값 출력
print(max_can)