[프로그래머스] 모의고사

HO94·2021년 7월 11일
0

프로그래머스

목록 보기
6/13

2021.07.11

모의고사

문제

  • 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
  • 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
  • 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

처음 작성한 코드

단순히 1번학생과 2번학생 3번학생 각각 count를 하고 그 수를 result에 저장,
result의 최대값과 같은 result index를 저장시켰다.
하지만 런타임 오류 발생(이였나 시간초과였나 기억이,,)

def solution(answers):
  answer = []
  one = [1, 2, 3, 4, 5]
  two = [2, 1, 2, 3, 2, 4, 2, 5]
  thr = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

  count1 = 0
  count2 = 0
  count3 = 0

  for i in range(len(answers)):
    if answers[i] == one[i%len(answers)]: count1 += 1
    if answers[i] == two[i%len(answers)]: count2 += 1
    if answers[i] == thr[i%len(answers)]: count3 += 1

  result = [count1, count2, count3]
  
  for i in range(len(result)):
    if result[i] == max(result) : answer.append(i+1)

  return answer

수정한 코드

def solution(answers):
    answer = []
    count = 0
    result = []
    stu = [[1, 2, 3, 4, 5],
           [2, 1, 2, 3, 2, 4, 2, 5],
           [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]


    for i in stu:
        for j in range(len(answers)):
            if i[j%len(i)] == answers[j]:
                count += 1  
        result.append(count)
        count = 0
    
    for i in range(len(result)):
        if result[i] == max(result) : answer.append(i+1)

    return answer

수정하고 나서도 오류가 발생했었는데,
if i[j%len(i)] == answers[j]: 여기서 [j%len(answers)]라고 썼었다,,
이거 찾아내느라 또 한참 걸렸었다.

0개의 댓글