[프로그래머스] Q.42579_Python

0
post-thumbnail

1. 문제-풀이

(1) 문제

👀문제 확인👀

문제 이해부터 조금 버벅거렸던 문제였다. 처음에 어떤식으로 풀지 머릿속에 그림을 그리면서 복잡해지다 보니 아이패드에 어떤식으로 딕셔너리를 만들어서 연결연결 시킬건지 대충 그리면서 풀었다.

참고로 이 문제는, 프로그래머스에 있는 코딩테스트 고득점 Kit해쉬 3단계 문제인데, 나는 대충 알고 있는 파이썬 딕셔너리 지식을 이용해서 풀었기 때문에 코드가 꽤나 지저분하다.

파이썬을 더 잘 다룰 수 있게 될때, 더 효율적으로 코드를 변경해보도록 해야겠다.

(2) 풀이


2. 풀이 방식

아래의 딕셔너리 3가지와 리스트 하나를 만드는것이 문풀의 핵심이다.

1. plays_genre = {특정 장르의 총 재생 횟수 : 특정 장르} → 전역변수
2. index_plays = {특정 노래의 고유 번호 : 특정 노래의 재생 횟수} → 지역변수
3. genre_index_list = {특정 장르 : [장르에 속한 노래 중 재생 횟수가 많은 순서로 나열된 고유번호 리스트]} → 전역변수
4. play_temp.sort(reverse=True) = [특정 장르내에서 재생횟수가 많은 순서로 나열된 재생횟수 리스트] → 지역변수

위의 3가지 딕셔너리와 리스트를 모두 만들었다면 알고리즘 풀이 방식은 아래와 같다.

1번 딕셔너리를 키 값을 기준으로 역순으로 정렬해서 총 재생횟수가 많은 순서대로 장르를 나열한다.

사실 3번 딕셔너리를 만들기 위해서 2번 딕셔너리와 4번 리스트를 이용해야 하는데, 4번 리스트가 이미 내림차순으로 재생횟수가 정렬되어 있으므로 0번 인덱스부터 순서대로 돌면서 해당 리스트의 값이 2번 딕셔너리의 value값과 일치할때의 2번 딕셔너리의 key값을 새로운 리스트에 추가하면서 3번 딕셔너리의 value값으로 완성된 새로운 리스트가 들어갈 수 있도록 만드는 것이다.

profile
재미있는 아이디어 떠올리는 것을 좋아하고, 이를 구현하여 세상에 즐거움을 선물하고 싶은 사람입니다.

0개의 댓글