N = 1일 때 동작하지 않습니다,
merge_sort(arr, sorted, 0, 0)이 호출되는데 left < right이 false라서 sorted에 아무 작업을 하지 않고 함수가 반환됩니다.
2750번 - 수 정렬하기
left == right가 N = 1일 때만 발생하지는 않습니다,
사실은 모든 N에 대해서 분할하면서 내려가면 발생할 수밖에 없는 케이스입니다.
N > 1인 경우에는 병합이 이루어지면서 정렬이 이루어지기에 sorted에 대입해주는 것 자체는 별 의미가 없는 구문이라고 할 수 있겠습니다.
조금 더 깔끔하게 짜고 싶으시다면 N > 1일 때만 merge_sort를 호출해주시거나 (N = 1이면 정렬 자체가 필요 없음),
sorted 배열 관리 자체를 merge 과정에서만 하고, merge가 끝난 이후 arr에 다시 대입해주는 방법 등이 있을 것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
godqhrals 1년 전 1
안녕하세요. 2750번 문제를 합병정렬을 이용해서 구현했는데, 채점을 진행하면 99%까지 갔다가 "틀렸습니다."로 나옵니다.
질문게시판의 반례들을 모두 넣어봤을 때는 정상적으로 잘 출력되지만 채점 때 틀린 것으로 나오는데, 어디가 문제인지 정확히 잘 모르겠어서 힌트를 여쭤보고자 올렸습니다!
알려주시면 감사하겠습니다. 좋은 하루 되세요:)