반응형

문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🧸 sort()는 배열 주소를 참조하여 수정하므로, 원본 데이터를 수정한다는 사실을 주의하자!
내 풀이
- -k 더하고 절댓값인 배열 생성 = numArray
- numlist의 각 숫자를
- -k 더함 = x
- x < 0 면 numArray에 -x가 있는지 확인
- 있으면 +0.5 하기 (꼭 0.5가 아니어도 됨. 0.1이어도 된다. 후에 확인용으로 더하는 것임)
- numPointArray를 정렬함 =sortedNumArray
- sortedNumArray에 각 숫자를 보고
- 정수면 +n
- 정수가 아니면 -num +n+0.5
function solution(numlist, n) {
const numArray = numlist.map(num => Math.abs(num - n));
const numPointArray = numlist.map(num => {
const x = num - n;
if(x < 0 && numArray.includes(-x)) return -x + 0.5;
return x;
})
const sortedNumArray = numPointArray.sort((x, y) => x - y);
return sortedNumArray.map(num => {
if(num === parseInt(num)) return num + n;
return -num + n + 0.5;
})
}
다른 풀이
function solution(numlist, n) {
return numlist.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
}
반응형
'CS > 알고리즘' 카테고리의 다른 글
[230323] 둘만의 암호 (0) | 2023.03.26 |
---|---|
[230323] 최빈값 구하기 (0) | 2023.03.26 |
[230323] 유한소수 판별하기: toFixed (0) | 2023.03.26 |
[230322] 등수 매기기: indexOf (0) | 2023.03.26 |
[230321] 최대공약수(GCD), 최소공배수(LCM) (0) | 2023.03.21 |