일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- zustand
- svelte
- javascript
- PullRequest
- react
- 비제어
- Study
- 티스토리챌린지
- form
- Pr
- tailwind css
- Fe
- SWR
- github
- react-query
- 사과게임
- 브라우저 동작
- barrel export
- next.js
- CSS
- js
- 협업
- 회고록
- Context API
- frontend
- JWT
- 프레임 워크
- 개발자
- 오블완
- 개발
- Today
- Total
ougi FE
[코딩 테스트] (제일 작은 수 제거하기) 나의 첫 코딩 테스트 트러블 슈팅!! ⚽(+ shift, sort, pop, splice, Math.min) 본문
[코딩 테스트] (제일 작은 수 제거하기) 나의 첫 코딩 테스트 트러블 슈팅!! ⚽(+ shift, sort, pop, splice, Math.min)
ougi 2024. 9. 28. 00:07저는 오늘 코딩 테스트를 풀다가 어이없는 실수들을 하면서 제가 했던 실수들을 반성하며 다시 이런 실수들을 하지 않도록 이렇게 글로 남겨보았습니다
먼저 이 문제에 대해서 설명 간단히 설명드리자면 배열 안에 최소 값을 뺀 배열을 return 하는 것인데 만약 최소 값을 빼고 남은 요소가 없으면 -1이 있는 배열을 return 하는 문제였습니다
이제 제 실수들을 말씀드리며 저의 첫 번째 트러블 슈팅을 시작하겠습니다!!

⚽ 첫 번째 실수
먼저 제가 했던 첫 번째 실수에 대해서 설명드리겠습니다
처음 실수는 문제에 이해에 대한 실수였습니다
이 문제는 제일 작은 값을 빼지만 배열의 순서가 바뀌면 안 되는 문제였습니다
하지만 테스트 케이스는 내림차순으로 정렬이 되어 있는 것처럼 보여서 이런 실수를 하게 되었습니다
일단 제가 처음에 시도한 코드를 보여드리겠습니다!
function solution(arr) {
var answer = [];
arr.sort((A,B)=>A-B).shift()
return(arr.length < 1? [-1]: arr.sort((A,B)=>B-A));
}
설명을 드리자면 sort를 이용하여 오름차순으로 정렬하여 shift 메서드를 이용하여서 작은 수를 빼주고
마지막에 배열이 비어있는지 확인하고 비어있으면 [-1]을 return, 비어있지 않으면 내림차순으로 정렬된 배열을 return 하게 작성하였습니다
shift()
배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다
sort()
배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다
⚽ 두 번째 실수
두 번째 실수는 첫 번째 실수를 고치려고 pop 메서드를 사용하였습니다
하지만 제가 pop 메서드의 사용법을 잘못 알고 있어서 한 번 더 통과하지 못하였습니다
저는 pop 메서드가 해당 값을 찾아서 pop 해준다라고 오해하고 있었습니다
하지만 pop 메서드의 사용법은 그것이 아니었습니다.....
function solution(arr) {
arr.pop(Math.min(arr));
return arr.length<1 ?[-1]:arr;
}
pop()
Array 인스턴스의 메서드로, 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다
⚽ 세번째 실수
그리고 마지막 세 번째 실수....
이게 바로 엄청나게 큰 실수 였습니다....
저는 계속 생각 없이 Math.min에 배열을 통째로 넣고 있었습니다...
function solution(arr) {
const i = Math.min(...arr);
arr.splice(arr.indexOf(i), 1);
return arr.length < 1 ? [-1] : arr;
}
이렇게 spread문법과 splice 메서드를 사용하여서 결국에는 완벽하게 고쳐내는데 성공하였습니다..
Math.min
입력 매개변수로 주어진 숫자 중 가장 작은 숫자를 반환합니다
spread 문법(...)
배열이나 문자열을 함수 호출 시에 필요한 인수나 배열에서 요구되는 요소들로 확장할 수 있게 해줍니다
splice()
메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다
마무리
오늘은 제가 처음으로 트러블 슈팅을 했는데 이상하게 알고 있던 개념도 정리하게 되고 글로 한 번 더 정리하니 참 좋은 경험이었던 것 같습니다 그리고 앞으로는 개념을 더 정확히 하자는 교훈도 얻게 되었습니다
이 글을 쓰면서 저는 https://developer.mozilla.org/en-US/ 이 공식문서로 정리하였습니다 사용법, 예시들이 잘 정리되어 있으니 참고하시면 좋을 것 같습니다 !
'JavaScript' 카테고리의 다른 글
Closure(클로저)가 뭘까? (4) | 2024.11.15 |
---|---|
package.json? package-lock.json? 무슨 차이일까? (2) | 2024.11.10 |
[JavaScript] Cropper.js가 뭘까? ✂️ (4) | 2024.09.11 |
[Formatter] ESLint가 뭘까?? (1) | 2024.09.06 |
Websocket💬이란?? (+Polling) (0) | 2024.08.23 |