인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

sonjs7554님의 프로필 이미지

작성한 질문수

38군데 합격 비법, 2024 코딩테스트 필수 알고리즘

3-9. 3주차 끝 & 숙제 설명

멜론 베스트 앨범 알고리즘 시각화 궁금중

해결된 질문

작성

·

127

1

1. 현재 학습 진도

현재 3주차 숙제 부분에서 3번째 문제인

멜론 베스트 앨범 알고리즘을 공부하고 있습니다.

 

2. 어려움을 겪는 부분

이해가 되지 않는 부분이 있어서, 문의 드립니다.

3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다.

해당 문제에 보면 , 위와 같은 조건이 존재하는데 ,

제가 강의를 두 번이나 돌려보면서 듣고 있는데 ,강의 하신 내용에, 재생횟수가 같은 노래에 대해서는 처리하신 코드가 안 보이는데, 보내주신 코드를 프로그래머스에 돌려봐도 정상적인 답안이라고 나오더라고요.

그래서, 해당 부분에 대한 설명이 있으면 더 좋을 듯 하고 궁금해서 질문드립니다.

제가 생각한 부분은 이미
for 문을 돌 때, 인덱스 순서대로 되어 있으므로,
재생횟수로 정렬을 해도 인덱스가 낮은 것이 무조건 앞으로 오게 된다. 이렇게 생각했는 데 맞는 것인지 궁금합니다.

답변 2

1

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

그리고 감사의 의미로 커피 기프티콘을 드리겠습니다 아래 카카오톡 오픈 링크로 연락 부탁드립니다!!

https://open.kakao.com/me/ding_coding_co

감사합니다

sonjs7554님의 프로필 이미지
sonjs7554
질문자

친절한 답변 감사드립니다..!!

0

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

안녕하세요 sonjs 님!! 좋은 질문 넘넘 감사합니다

 

 

1. "장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다" 조건 처리에 대해

질문하신 대로, 인덱스 순서대로 처리되는 이유는 이미 for 루프와 sorted 함수의 특성 때문입니다.

코드를 다시 살펴보면:

sorted_genre_index_play_array = sorted(
    genre_index_play_array_dict[genre], 
    key=lambda item: item[1], 
    reverse=True
)

여기서 sorted 함수는 reverse=True로 재생 횟수를 기준으로 내림차순 정렬하고 있습니다.
하지만 재생 횟수가 동일한 경우에는, Python의 sorted 함수는 안정 정렬(stable sort)을 사용하기 때문에, 원래 입력 순서(즉, 인덱스 순서)를 유지합니다.

즉, genre_index_play_array_dict[genre] 리스트는 처음에 인덱스 순서대로 저장되었으므로, 동일한 재생 횟수를 가진 노래는 자연스럽게 인덱스가 낮은 순서대로 정렬됩니다.


2. 질문자의 생각이 맞는지 확인

네, 질문자님께서 생각하신 내용이 정확합니다!
이미 for 루프에서 데이터를 genre_index_play_array_dict[genre]에 추가할 때 인덱스 순서대로 저장되었으므로, sorted를 적용해도 안정 정렬 특성상 인덱스가 낮은 것이 먼저 오게 됩니다.

예를 들어:

genre_index_play_array_dict["classic"] = [[0, 150], [2, 150], [3, 800]]

여기서 sorted를 적용하면, 재생 횟수를 기준으로 정렬된 결과는:

[[3, 800], [0, 150], [2, 150]]

이런 식으로 정렬되며, 재생 횟수가 동일한 항목의 경우 인덱스 순서를 유지했을 것입니다.


3. 왜 정답으로 인정되는지

프로그래머스에서 제출된 코드가 정답으로 처리되는 이유는:

  1. 재생 횟수를 기준으로 정렬하는 로직은 명확히 구현되어 있고,

  2. 동일한 재생 횟수의 경우 안정 정렬의 특성상 인덱스 순서대로 처리되기 때문입니다.

이로 인해, 문제의 조건(재생 횟수 같을 경우 인덱스가 낮은 순서)이 자연스럽게 만족됩니다.


따라서 sonjs7554 님의 생각이 맞습니다! 이미 for 루프와 sorted 함수의 안정 정렬 특성으로 인해, 재생 횟수가 동일한 경우 인덱스 순서가 유지됩니다.

 

이 내용에 대해 설명이 추가적으로 작성되면 더 좋을 것 같습니다!!

감사드립니다 덕분에 더 좋은 강의를 만들 수 있을 것 같습니다!! 좋은 하루 보내시고 새해 복 많이 받으세요