오랑우탄의 반란

프로그래머스 | 모의고사 (Python3) Enumerate 본문

PYTHON/프로그래머스

프로그래머스 | 모의고사 (Python3) Enumerate

5&2 2024. 7. 23. 15:37
반응형


오늘도 오랑이는 문제를 풉니다. 

 

모의고사

 

 

풀이 과정

  • 각 수포자의 답이 answers 리스트와 일치하는지 비교
  • 일치할 경우 리스트 형태로 각각 점수 부여
  • 부여된 점수 중 최고값에 해당하는 인덱스값 + 1 을 리스트로 반환 

위 조건에 따라 코드를 설계해봅시다.

우선 전체 점수와 각 수포자의 답을 리스트 형태로 저장해줍니다. 

def solution(answers):
    answer = []
    score = [0,0,0]
    
    g1 = [1,2,3,4,5]
    g2 = [2,1,2,3,2,4,2,5]
    g3 = [3,3,1,1,2,2,4,4,5,5]

 

이제 조건을 나열해봅시다. 

각 수포자에 대해 answers[ i ] 와 g[ i % 리스트 길이] 를 비교해줍니다. 

나머지값으로 answers 길이가 g보다 길어져도 자동으로 반복되게 할 수 있습니다. 

비교 시 같으면 score 의 각 인덱스값에 대해 1을 더해줍니다. 

for i in range(len(answers)):
    if answers[i] == g1[i%5]:
        score[0] += 1
    if answers[i] == g2[i%8]:
        score[1] += 1
    if answers[i] == g3[i%10]:
        score[2] += 1

 

Enumerate(리스트)

리스트의 경우 각 인덱스와 리스트값을 한 쌍으로 반환 

 

최종 answer 를 얻기 위해서는 enumerate 를 사용합니다. 

반환된 인덱스와 값에 대해, 값이 score 의 최대값과 동일한 경우 인덱스+1 을 answer 에 넣어줍니다. 

for idx, num in enumerate(score):
    if num == max(score):
        answer.append(idx+1)

 

 

최종 코드

def solution(answers):
    answer = []
    score = [0,0,0]
    
    g1 = [1,2,3,4,5]
    g2 = [2,1,2,3,2,4,2,5]
    g3 = [3,3,1,1,2,2,4,4,5,5]
    
    for i in range(len(answers)):
        if answers[i] == g1[i%5]:
            score[0] += 1
        if answers[i] == g2[i%8]:
            score[1] += 1
        if answers[i] == g3[i%10]:
            score[2] += 1
    
    for idx, num in enumerate(score):
        if num == max(score):
            answer.append(idx+1)
    
    return answer

 

 


오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

반응형