본문 바로가기
PS/programmers

[Lv. 1] 모의고사(Python)

by 강렬한 스포트라이트 2023. 3. 31.

안녕하세요. 

강렬한 스포트라이트 입니다!

 

하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.

 

<문제 설명>

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

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 함수를 작성해주세요.

 

<제한 사항>

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

 

<입출력 예>

answers  return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]

 

 

1) 수포자1,2,3 각 고른 정답을 리스트에 담은 후 맞출 경우 cnt의 값을 증가해줍니다.

그리고 cnt의 최댓값과 동일한 수포자(1,2,3)를 return하여 구현한 코드입니다.

 

def solution(answers):
    q1=[1,2,3,4,5]*len(answers)
    q2=[2,1,2,3,2,4,2,5]*len(answers)
    q3=[3,3,1,1,2,2,4,4,5,5]*len(answers)
    cnt=[0,0,0] #맞춘 문제 갯수를 누적함
    result=[] #가장 높은 점수를 받은 수포자
    for i in range(len(answers)):
        if answers[i]==q1[i]:
            cnt[0]+=1
        if answers[i]==q2[i]:
            cnt[1]+=1
        if answers[i]==q3[i]:
            cnt[2]+=1
    for j in range(len(cnt)):
        if cnt[j]==max(cnt):
            result.append(j+1)
    return result

 

 

2) 수포자1,2,3 각 고른 정답을 하나의 리스트에 담아서 2차원 리스트를 만듭니다.

이후 enumerate() 함수를 사용하여 하나의 조건문에도 충족될 수 있도록 구현한 코드입니다.

 

def solution(answers):
    q=[[1,2,3,4,5],
         [2,1,2,3,2,4,2,5],
         [3,3,1,1,2,2,4,4,5,5]]
    cnt=[0,0,0]
    for idx1,i in enumerate(answers):
        for idx2,j in enumerate(q):
            if i==j[idx1%len(j)]:
                cnt[idx2]+=1
    return [idx3+1 for idx3,k in enumerate(cnt) if k==max(cnt)] #for,if 한줄로 기재함

 

 

해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`

감사합니다!

 

 

반응형
SMALL

'PS > programmers' 카테고리의 다른 글

[Lv. 1] 최소직사각형(Python)  (0) 2023.04.06
[Lv. 1] K번째수(Python)  (0) 2023.04.04
[Lv. 1] 음양 더하기(Python)  (0) 2023.03.30
[LV. 1] 숫자 문자열과 영단어(Python)  (1) 2023.03.29
[Lv. 1] 콜라츠 추측(Python)  (0) 2023.03.28