제주코딩베이스캠프 자바스크립트 100제를 공부하며 정리한 내용입니다. 문제와 정답 노션 링크(무료), 인프런 해설 강의(유료)
sort 함수를 사용해 입력된 숫자 값을 재배열하는 문제입니다.
주어진 키값들이 작은 순서대로 정렬되었는지 확인하는 함수입니다.
// 입력
176 156 155 165 166 169
// 출력
no
// 입력
155 156 165 166 169 176
// 출력
yes
주어진 키 값과 정렬딘 키 값을 비교해야 하므로 빈 문자열을 하나 더 생성합니다.
const key = "176 156 155 165 166 169"
let sortKey = ""; // 정렬된 키 값을 넣을 빈 문자열
이제 정렬된 키 값을 구해서 sortKey 에 넣습니다. 우선 문자열 형태의 키 값을 공백 기준의 배열 형태로 반환하고
sortKey = key.split(" ")
sort 메소드를 사용해서 배열을 정렬합니다.
sortKey = key.split(" ").sort()
// sort() 만 쓰면 문자열 기준으로 정렬합니다. 92가 123 보다 크니 숫자 비교에 맞지 않습니다.
// sort() 안에 함수를 작성해주면
sortKey = key.split(" ").sort(function (a, b) { a - b })
// a 와 b 를 비교해 오름 차순으로 정렬해줍니다. b - a 는 반대
// 화살표 함수로 쓴다면,
sortKey = key.split(" ").sort((a, b) => { a - b })
이렇게 정렬한 배열을 기존 입력값과 비교하기 위해 join()
메소드를 사용하고
sortKey = key.split(" ").sort(function (a, b) { a - b }).join();
주어진 키 값과 정렬된 키값을 비교해서 yes 와 no 를 출력합니다.
키 값을 입력받는 다고 하고 최종 코드를 정리하면,
const key = prompt("키를 입력하세요");
let sortKey = "";
sortKey = key // 메소드들을 보기 편하게 세로 나열
.split(" ")
.sort((a, b) => { return a - b; })
.join(" ");
if ( key === sortKey) {
console.log("yes");
} else {
console.log("no");
}