자바스크립트, sort 구현하기

라용·2022년 8월 15일
0

JS 100제 _ 제코베

목록 보기
6/13

제주코딩베이스캠프 자바스크립트 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");
}
profile
Today I Learned

0개의 댓글