멜론 베스트 앨범 알고리즘 시각화 궁금중
1. 현재 학습 진도
현재 3주차 숙제 부분에서 3번째 문제인
멜론 베스트 앨범 알고리즘을 공부하고 있습니다.
2. 어려움을 겪는 부분
이해가 되지 않는 부분이 있어서, 문의 드립니다.
3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다.
해당 문제에 보면 , 위와 같은 조건이 존재하는데 ,
제가 강의를 두 번이나 돌려보면서 듣고 있는데 ,강의 하신 내용에, 재생횟수가 같은 노래에 대해서는 처리하신 코드가 안 보이는데, 보내주신 코드를 프로그래머스에 돌려봐도 정상적인 답안이라고 나오더라고요.
그래서, 해당 부분에 대한 설명이 있으면 더 좋을 듯 하고 궁금해서 질문드립니다.
제가 생각한 부분은 이미
for 문을 돌 때, 인덱스 순서대로 되어 있으므로,
재생횟수로 정렬을 해도 인덱스가 낮은 것이 무조건 앞으로 오게 된다. 이렇게 생각했는 데 맞는 것인지 궁금합니다.
답변 2
1
그리고 감사의 의미로 커피 기프티콘을 드리겠습니다 아래 카카오톡 오픈 링크로 연락 부탁드립니다!!
https://open.kakao.com/me/ding_coding_co
감사합니다
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. 왜 정답으로 인정되는지
프로그래머스에서 제출된 코드가 정답으로 처리되는 이유는:
재생 횟수를 기준으로 정렬하는 로직은 명확히 구현되어 있고,
동일한 재생 횟수의 경우 안정 정렬의 특성상 인덱스 순서대로 처리되기 때문입니다.
이로 인해, 문제의 조건(재생 횟수 같을 경우 인덱스가 낮은 순서)이 자연스럽게 만족됩니다.
따라서 sonjs7554 님의 생각이 맞습니다! 이미 for 루프와 sorted 함수의 안정 정렬 특성으로 인해, 재생 횟수가 동일한 경우 인덱스 순서가 유지됩니다.
이 내용에 대해 설명이 추가적으로 작성되면 더 좋을 것 같습니다!!
감사드립니다 덕분에 더 좋은 강의를 만들 수 있을 것 같습니다!! 좋은 하루 보내시고 새해 복 많이 받으세요
코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요
0
55
2
3-3 정렬-2 선택정렬 로직
0
36
2
링크드 리스트 끝에서 k번째 값 출력하기
0
42
2
LinkedList 과제 Fast, slow 포인터
0
49
2
투포인터 시간복잡도
0
50
2
수강평 작성 후 자료
0
50
2
수업교재 링크 오류
2
106
2
프로그래머스에서 제출 후 채점시 틀림ㅠ
0
127
2
1-10 알고리즘 더 풀어보기(2) 질문 있습니다
0
69
2
문제 풀이 방식 관련 질문입니다!
0
81
2
1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다
0
85
2
수업자료 pdf 받고싶습니다
0
103
2
강의 자료 오류 수정
0
70
1
2-10 더하거나 빼거나 관련 질문입니다
0
61
2
3-8 해쉬 -2
0
48
2
Linked List Element Delete Explanation Problem
0
66
2
강의3-4 스택 탑 문제
0
74
2
코드스니펫 입출력 케이스에 오류가 있는것 같아요
0
98
3
링크드 리스트 원소 찾기 구현 방식 질문드립니다.
0
74
2
1874 - 스택 문항
0
80
2
DP Java 예제 자료형 오버플로우 문제
0
97
2
4-9 4주차 숙제중 농심라면 문제
0
107
2
DFS 에서 스택을 사용하는 이유
1
183
3
들여쓰기가 햇갈리네요
0
120
2





