| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 내일배움카드
- useMemo
- 이벤트
- react
- 프로그래머스
- 비전공자
- 리액트
- 자바스크립트
- 자료구조
- MegabyteSchool
- styled-components
- CSS
- JavaScript
- useRef
- 메가바이트스쿨
- 공식문서
- 프론트엔드
- 개발 공부
- 코딩테스트
- 알고리즘
- 패스트캠퍼스
- GIT
- 모던 자바스크립트 딥 다이브
- 국비지원교육
- 개발자취업부트캠프
- 모던 딥 다이브 자바스크립트
- 입문
- next.js
- TypeScript
- Github
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 특이한 정렬 본문
🗒️ 문제 설명
정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
⚠️ 제한 사항
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 원소 ≤ 10,000
- 1 ≤ numlist의 길이 ≤ 100
- numlist는 중복된 원소를 갖지 않습니다.
👀 입출력 예
| numlist | n | result |
| [1, 2, 3, 4, 5, 6] | 4 | [4, 5, 3, 6, 2, 1] |
| [10000,20,36,47,40,6,10,7000] | 30 | [36, 40, 20, 47, 10, 6, 7000, 10000] |
❇️ 나의 풀이
- numlist 배열을 sort 함수를 통해 재정렬을 진행했다.
- 오름차순이나 내림차순이 아니라 n에 가까운 정도로 정렬해야 하기 때문에 Math.abs(res - n) - Math.abs(cur-n)으로 아이템에서 n을 뺐을 때의 값이 더 적은 것이 앞에 오도록 진행했다.
- 가까운 정도가 같으면 큰 수를 우선 배치하기 때문에 해당 조건에서는 내림차순 정렬되도록 했다.
function solution(numlist, n) {
var answer = numlist.sort((res,cur) => {
if(Math.abs(res-n) === Math.abs(cur-n)){
return cur - res
}
return Math.abs(res-n) - Math.abs(cur-n)
},[])
return answer
}
✍️ 리뷰
✔️ sort 함수 내에는 ||(OR 연산자)를 사용할 수 있으므로 코드의 길이를 더 줄일 수 있다.
function solution(numlist, n) {
return numlist.sort((res, cur) => Math.abs(res - n) - Math.abs(cur - n) || cur - res);
}'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 합성수 찾기 (0) | 2023.01.04 |
|---|---|
| [프로그래머스] 모스부호 (1) (0) | 2023.01.03 |
| [프로그래머스] 로그인 성공? (0) | 2023.01.03 |
| [프로그래머스] 문자열 계산하기 (0) | 2023.01.02 |
| [프로그래머스] 2차원으로 만들기 (0) | 2023.01.02 |