제일 작은 수 제거하기

·2022년 3월 22일
0

알고리즘

목록 보기
18/47

쫌 헤맸다..........
그리고 코드도 조금 난잡하다

function solution(arr) {
    const arr2 = [...arr]
    const del = arr2.sort((a,b)=> a-b).shift()
    const del1 = arr.indexOf(del)
    return arr.length === 1 ? [-1] : arr.splice(del1,1) ? arr : false
}

사실 처음에는 중복이 있는건가? 라고 생각을 해서 먼저 중복부터 지울 뻔 했다. 아니 지울라하다가
nuw Set을 아직 다뤄보지 않아서 아 모르겠다 하고 넘어가고 걍 풀어버렸는데
제한조건 두번째에 있는 이야기가 중복이 없다. 라는 이야기라는 것을....알았다..^^ 삽질 안해서 다행

그럼 코드풀이를 해보면
1. 배열을 얕은 복사를 사용했다.
2. 얕은 복사를 한 배열의 값을 정렬하고, 오름차순으로 정렬을 하고 제일 앞에 있는 요소를 제거했다.
3. 그리고 제거한 값을 원래 배열에 몇번 인덱스에 존재하는지 확인하고
4. 만약 배열의 길이가 1이라면 [-1]을 내보내고, 배열의 길이가 1이 아니라면 splice를 사용하여
3번에서 찾은 요소의 인덱스 번호를 지목하고 1개를 지운 후에 그 값을 내보냈다.

물론 더 짧게 쓰고 간단하게 쓸 수 있었겠지만, 조금 보람이 느껴졌던 문제였던 것 같다.

왜냐하면 얕은 복사를 실제로 알고리즘 문제에서 사용했기 때문인데

sort(),shift()같은 것들은 "원래의 배열에 영향을 주는"메소드기에 직접적으로 사용하면 내가 원하는 값을 뺴지 못했을 것 같다.
물론 될 수도 있겠지만 나는 아직 프로그래밍을 제대로 배우기 시작한지 이주도 안된 꼬꼬마니까.

일단 내가 배운 것을 활용해서 풀어낸 것에 대해서 뿌듯해서 풀고 기뻤던 문제였다.

profile
물류 서비스 Backend Software Developer

0개의 댓글

관련 채용 정보