[나의 풀이]
function solution(strings, n) {
let arr = strings.sort((a, b) => {
if (a[n] > b[n]) return 1
else if (a[n] < b[n]) return -1
else {
if (a > b) return 1
else return -1
}
})
return arr
}
이번 문제도 결국 정렬문제이기에 sort()
메소드가 가장 먼저 생각나서 해당 메소드를 사용했다 다만 여러가지 조건이 있다보니 if
, else if
를 사용하여 조건에 맞게 정렬할 수 있도록 하였다.
if (a[n] > b[n]) return 1
else if (a[n] < b[n]) return -1
}
위의 두 조건에서는 a와 b로 주어지는 요소의 n번째
index를 비교하여 a의 n번째가 크다면 1을 리턴
반대로 작다면 -1을 리턴
else {
if (a > b) return 1
else return -1
}
마지막으로 n번째의 요소가 동일하다면 해당 요소의 앞 요소를 비교하여 정렬하도록 하였다.
이렇게 작성하고 보니 뭔가 코드가 보기 애매한 느낌이라 if
를 여러개 사용하였는데 코드를 보기에는 아래의 코드가 더 읽기 쉬운거 같다.
function solution(strings, n) {
let arr = strings.sort((a, b) => {
if (a[n] > b[n]) return 1;
if (a[n] < b[n]) return -1;
if (a[n] === b[n]) {
if (a > b) {
return 1
} else return -1
}
})
return arr
}