solution(answers)라는 함수에서 받아올 return값을 answer라 선언하고 그 값을 리스트 형태로 가져오고자 했다.
수포자 1,2,3 각자의 찍기 패턴대로 제출한 답안과 solution에 입력되는 답안지의 값을 하나씩 꺼내와서 비교를 해준 후 정답여부를 체크한다
각자의 정답 개수를 측정하는데 까지는 문제가 없었지만 이 값으로 어떻게 최고점자 리스트를 작성할지가 고민이다..
answer를 도출할때 cnt_num의 최대값을 확인한 후 그 값에 해당하는 자를 뽑아오는 방식을 생각했는데 코드가 너무 길어진다... 쎄한느낌에 혹시나 구글링을 본다... 다들.. 짧게 잘 작성하셨구나.. 더 간결하게 짤 방법이 없나 다시 고민해보자
각자의 점수를 가진 묶음을 만들고 그 중 최고점수를 가진 사람들을 뽑아와서 나열해보자!
def solution(answers):
#최종 출력 값(등수 오름차순)
answer = []
#찍는 방식 = 수포자 1,2,3 제출답안
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
#맞은 갯수
cnt_one = 0
cnt_two = 0
cnt_three = 0
#답지를 하나씩 채점했을때 맞은 갯수를 카운트해라
for i, corr in enumerate(answers):
if corr == one[i]:
cnt_one += 1
if corr == two[i]:
cnt_two += 1
if corr == three[i]:
cnt_three += 1
#마지막까지 채점했을때 각 학생의 점수 (딕셔너리)
# '1' = 수포자1,
# '2' = 수포자2,
# '3' = 수포자3
fin_score = {'1': cnt_one, '2': cnt_two, '3': cnt_three}
#최고점 선출 -> 리스트[딕셔너리?] 형태
score_max = max(fin_score.values())
rank1 = [(k, v) for k, v in fin_score.items() if v == score_max]
#최고점이 동점일 경우 최고점 선출(rank1)을 순차적으로 돌면서 해당 학생을 answer에 추가한다.
for tmp in rank1:
answer.append(int(tmp[0]))
#구하고자 하는 답안
return answer
# result = solution([4,4,1,3,2])
# result = solution([1,2,3,4,5])
result = solution([1,3,2,4,2])
print(result)
#출력되는 값은 각 학생의 점수 딕셔너리를 오름차순으로 나열해놨기 때문에 오름차순으로 나옴.
#학생의 점수를 다른방식으로 해결해 나가는 경우 필요시 sort 가능성?
함수입력값 3줄 각각 실행시 정상 출력 되는 것을 확인했다.