쫌 헤맸다..........
그리고 코드도 조금 난잡하다
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()같은 것들은 "원래의 배열에 영향을 주는"
메소드기에 직접적으로 사용하면 내가 원하는 값을 뺴지 못했을 것 같다.
물론 될 수도 있겠지만 나는 아직 프로그래밍을 제대로 배우기 시작한지 이주도 안된 꼬꼬마니까.
일단 내가 배운 것을 활용해서 풀어낸 것에 대해서 뿌듯해서 풀고 기뻤던 문제였다.