강의로 돌아가기
패터쓴

참고: 배열 순서가 바뀌면 안됩니다.

첨에 소트 하고 작은거 뱉어냈더니 테스트케이스 다틀려서 이상하다 하고 소트를 안하고 걍 젤 작은거 찾아서 빼니까 되네요.

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function solution(arr) {
    if(arr.length === 1) return[-1];


    let i = 0;
    for (let j = 1; j<arr.length; j++){
        if(arr[j]<arr[i]) {
            i=j;
        }
    }

    arr.splice(i,1);

    return arr;
}
1 개의 답변
하동완

배열이 나왔다 하면 섣불리 소트(정렬)부터 하는 습관을 기르면 안되는 이유를 말씀드립니다.
대다수의 통계자료가 배열의 형태로 되어있는데요,
1년 12개월동안 월평균기온의 배열이 있다고 예를 들면
[2,5,11,17,20,25,29,28,23,19,13,8]처럼 열두개의 숫자가 주어질텐데
각 위치(n개월)마다 해당하는 기온을 보여줘야 하는데 내 마음대로 내림차순 소트를 한다면?
1년의 자료가 여름가을봄겨울로 뒤바뀌며 기온그래프를 보면 시간이 지날 수록 반드시 추워지며 빙하기를 향해가는 그래프가 됩니다....
즉, "지구온난화 시뮬레이션 과정에서 가장 추운 달을 빼고 1년이 11개월이라면 기온분포가 어떻게 될까?"와 같은 질문에 대해서 소트를 할 수가 없게 됩니다.
임의로 소트하지 않은 들쑥날쑥한 수치 그 자체가 사실은 이미 어떠한 규칙과 순서에 맞도록 자리잡은 안정된 데이터일 확률이 높은거죠~

소트 알고리즘을 배우는 차원에서 항상 뒤죽박죽한 숫자를 내림차순/오름차순으로 줄세워야 하는 문제만 풀다 보니,
불안정한 상태의 배열을 안정된 상태로 다듬어야 한다는 인상을 주면서 고정관념을 심어주는 것 같아요.
이렇게 반례를 들지 않는다면 학습단계에서 수열의 순서를 지켜야 하는 경우를 접하기가 힘들어지는 것 같네요.

그래서, 소트는 꼭 필요할 때만 실행해봐요~

  • 패터쓴

    맞는 말씀이세요!! 주어진 배열의 순서 자체가 의미있는 순서일 확률이 높다는 말씀도 일리가 있는 것 같네요. 또 생각해보면 성능상의 이유로도 섣불리 소트하는 것 보다는 다른 해결책을 찾아보는게 나을 것 같네요. 이렇게 생각해보니 소트는 정말 ‘재배열’이 필요한 경우 외에는 최대한 안쓰는게 맞는 것 같네요 ㅋㅋ 답변 감사드립니다!!

    패터쓴―2021.06.19 19:19
  • 하재원

    소트해서 최소값 찾아내서 하려고 했는데.. 말씀하신대로 그 자체로 의미있는 데이터라고 생각하고 앞으로 코드 작성하는데 주의해야 겠네요!! 감사합니다.

    하재원―2021.09.14 11:23
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.