본문 바로가기

개인공부/알고리즘

알고리즘 문제 풀이(코딩테스트 문제 1)

문제 1.

 

문제 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)