처리조건
풀이
입력값 : solution([6, 10, 2]);
우선 입력으로 들어온 numbers를 자세히 보자 6 ,10 ,2이며 sort로 정렬하여 앞 뒤를 문자열로 타입을 바꿔 서로 더해보고 더 높은 수가 나오는 순서를 정렬 시켜본다고 하자.
위 처럼 numbers.sort안에 인자로 함수를 넣어 각각 앞 뒤로 비교해서 string타입으로 합쳐주고 parseInt로 크기를 비교해 위치를 정렬하게된다. sort는 한차례 돌고나서 계속 몇 차례가 돌면서 더 이상 바꿀 자리가 없으면 종료되므로 numbers가 최종 정렬되고 join("")으로 합쳐주면 최종 숫자가 나오게된다.
문제를 풀고나니 11번에서 계속 오류가 났다. 한 두개정도가 오류가 나면 꼭 제한사항을 확인해보자. 제한사항 중에 numbers원소가 0이상이므로 0이 들어 갈 수있고 0 0 0 이 들어가면 마지막 join후 000이 리턴될 수 있다. 그래서 answer을 숫자로 바꿔 0이면 "0"를 리턴하도록 하였다.
function solution(numbers) {
numbers.sort(sortfunc);
let answer = numbers.join("");
if (parseInt(answer)===0) return "0";
else return answer;
}
function sortfunc(a, b) {
if (parseInt(a.toString() + b.toString()) < parseInt(b.toString() + a.toString())) return 1;
if (parseInt(a.toString() + b.toString()) > parseInt(b.toString() + a.toString())) return -1;
if (parseInt(a.toString() + b.toString()) === parseInt(b.toString() + a.toString())) return 0;
}
'일반 학습 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 조이스틱 (0) | 2022.03.18 |
---|---|
[프로그래머스] "123" 같은 문자열을 순열로 만들기 (0) | 2022.03.17 |
[프로그래머스] 프린터 (0) | 2022.03.16 |
[프로그래머스] 기능개발 (0) | 2022.03.15 |
[프로그래머스] 주차 요금 계산 (0) | 2022.03.14 |
댓글