본문 바로가기

Algorithm/Sorting

(Python3) - 프로그래머스(코딩 기초 트레이닝) : 전국 대회 선발 고사

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181851

 

프로그래머스

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

programmers.co.kr

lambda를 사용한 정렬 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

학생 번호, 등수를 key, value로 저장할 hash map participants를 선언 해 줍니다.

📔 풀이과정

1. rank의 index에 대해 for loop를 수행하며 participants에 참석 가능한 학생들의 번호와 등수를 저장합니다.

2. sorted_participants를 선언해 participants의 item들 중 value에 대해 오름차순으로 정렬해준 tuple의 배열들을 저장합니다.

3. a, b, c값은 sorted_participants의 tuple 0, 1, 2 index의 첫 번째 원소가 됩니다. 이는 0번, 1번, 2번 등수의 학생번호를 뜻하며 각 값을 저장해줍니다.

📔 정답 출력 | 반환

10000 * a + 100 * b + c를 반환합니다.


📕 Code

📔 Python3

def solution(rank, attendance):
    participants = {}
    for i in range(0, len(rank)):
        if attendance[i]:
            participants[i] = rank[i]
    sorted_participants = sorted(participants.items(), key = lambda x: x[1])

    a = sorted_participants[0][0]
    b = sorted_participants[1][0]
    c = sorted_participants[2][0]
    return 10000 * a + 100 * b + c

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.