프로그래머스 전국 대회 선발 고사

박정재·2023년 5월 1일
0

문제 설명

0번부터 n - 1번까지 n명의 학생 중 등수가 높은 3명을 선발해야 한다. 참여불가한 학생은 제외한다.
rank : 학생들의 등수를 담은 정수 배열 (index는 학생 번호를 의미)
attendance : 참석 가능 여부가 담긴 boolean 배열

선발된 3명의 학생 번호들을 등수가 높은 순서대로 각각 a, b, c번이라고 할 때, 10,000 x a + 100 x b + c를 반환해야 한다.

제한사항

  • rank의 원소는 1부터 n까지의 정수로 모두 서로 다르다.
  • attendance의 원소 중 적어도 3개는 True이다.

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/181851

문제 풀이

def solution(rank, attendance):
	answer = 0
    cnt = 0 # 참여가능한 등수 높은 3명을 세기 위한 변수
    
    for i in range(1, len(rank) + 1):
        num = rank.index(i) # 학생의 번호를 담기 위한 변수
        
        # 참석 가능한 학생의 번호를 등수대로 맞는 계산 방식을 적용하여 답안을 구한다.
        if attendance[num]:
            answer += num * 100 ** (2 - cnt)
            cnt += 1
        
        if cnt == 3:
            break
    
    return answer
profile
Keep on dreaming and dreaming

0개의 댓글