Python 맛보기 문제

2023. 3. 20. 21:54test/Python

문제

  • 수포자 3명(이하 s1, s2, s3)이 있습니다.
  • 수포자 3명은 수학 시험에 출제된 문제를 전부 찍으려고 합니다.
  • 단, 수포자 3명은 각자의 찍기 패턴이 있어 패턴대로만 찍습니다. 
  • 1번 문제부터 마지막 문제까지의 정답이 순서대로 들어있는 배열 answers가 있다고 가정합니다.
  • 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성합니다.
s1 = [1, 2, 3, 4, 5]
s2 = [2, 1, 2, 3, 2, 4, 2, 5]
s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

수포자 3명의 찍기 패턴


 

제한 조건

  • 시험은 최대 10,000 문제로 구성되어있습니다.
  • 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
  • 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.

 

해결한 방법

 

1. solution 함수를 선언 합니다.

def solution(answers):

 

2. 함수 안에 s1, s2, s3의 찍기 패턴을 리스트로 작성 합니다. (가답안지에 답을 체크하는 느낌적인 느낌입니다.)

s1 = [1, 2, 3, 4, 5]
s2 = [2, 1, 2, 3, 2, 4, 2, 5]
s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

 

3. 리스트 answers의 요소들과 s1, s2, s3에 담긴 요소들을 각각 대조 합니다. (정답을 맞춰서 점수를

    세어주는 느낌적인 느낌입니다.)

point = [0, 0, 0]

for i, answer in enumerate(answers):
    if answer == s1[i % len(s1)]:
        point[0] += 1
    if answer == s2[i % len(s2)]:
        point[1] += 1
    if answer == s3[i % len(s3)]:
        point[2] += 1

 

4. point안에 담겨진 요소들의 크기를 비교해서 가장 큰 수를 산출해서 rank에 담아줍니다.

    (s1, s2, s3중에 점수가 가장 높은 녀석을 뽑아주는 느낌적인 느낌입니다.)

rank = []

for i, best in enumerate(point):
    if max(point) == best:
        rank.append(i + 1)

return rank