[99클럽 코테스터디 2기][Python/비기너] 열번째 문제: 모의고사

최민지·2024년 5월 29일
0
post-thumbnail

오늘의 주제도 완전탐색!
[모의고사]

문제

입력과 출력

코드

def solution(answers):
    #1번 수포자 : 1~5 반복
    #2번 수포자: 2(1~5) 반복
    #3번 수포자: 31245 두번씩 반복
    fi=[1,2,3,4,5]
    se=[2,1,2,3,2,4,2,5]
    th=[3,3,1,1,2,2,4,4,5,5]
    
    answer=[0 for i in range(3)]#얘를 지정해주지 않으니 틀린 풀이가 됨
    for i in range(len(answers)):
        if answers[i]==fi[i%len(fi)]:
            answer[0]+=1
        if answers[i]==se[i%len(se)]:
            answer[1]+=1
        if answers[i]==th[i%len(th)]:
            answer[2]+=1
    
    result=[]
    for i in range(len(answer)):
        if answer[i]==max(answer):
            result.append(i+1)
        
    return result

알고리즘
#각각의 수포자가 찍는 방법을 배열로 정의한다
#수포자가 3명이므로 길이가 3인 배열을 정의해준다
#반복문을 통해 찍은 답과 실제 답이 일치하면 각각의 수포자 인덱스의 요소를 +1해준다
#result라는 빈 배열을 정의해주고
#큰값이 여러개일때, 이들을 담아 return해준다.

회고

  • 처음에는 반복되는 배열을 answers의 길이에 맞게 반복시켜주는
    list(chain.from_iterable(repeat(numbers, n)))
    이렇게 함수를 이용하려 했는데, 한번 작성하고 정리하던 중 그냥 answers의 인덱스를 찍은 답 배열의 크기로 나눈 나머지를 사용하면 된다는 것을 깨닫고 수정하였다.
    answers[i]==fi[i%len(fi)]
  • 문제를 이해하고 알고리즘을 정리하는데 오래걸린다.
    정말로 독서의 필요성을 느껴버렸다. 그리고 코딩 경험 부족인 탓이겠지.. 더 더 더 많은 문제를 풀어봐야겠다..!!
  • 이번 문제는 다른 풀이를 참고해서 풀게 된 점이 아쉽다. 그래도 전에 비해 풀이를 보지않고 코드를 작성부터 해보는 연습을 해보고 있다.

아직 TIL 레이아웃이 고정되지 않았는데, 점점 찾아가고 있다..!
지금까지 써왔던 something new I leaned 와 to do list를 회고로 작성해보려한다 ㅎㅎ


마지막은 웃겨서 주워온 짤.. 웃고가세요

profile
공부..일기....

0개의 댓글