티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
sort()
function solution(strings, n) {
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
if(a < b) return -1
if(a === b) return 0
}
})
return strings
}
- n번째 인덱스 기준으로 비교
- n번째 인덱스의 문자가 같을 경우 전체 문자 기준으로 비교
다른 사람의 풀이
localeCompare()
* a.localCompare(b) 일 때, 인수로 지정된 b가 비교대상인 a와 같으면 0, 앞에 있으면 양수, 뒤에 있으면 음수 반환
function solution(strings, n) {
strings.sort((a, b) =>
a[n].localeCompare(b[n]) === 0
? a.localeCompare(b) // 0일 경우(문자열이 같을 경우)
: a[n].localeCompare(b[n]) // 0이 아닐 경우(문자열이 다를 경우)
)
return strings
}
// 변수 이용
function solution(strings, n) {
strings.sort((a, b) => {
const localeCompare = a[n].localeCompare(b[n])
return localeCompare === 0
? a.localeCompare(b)
: localeCompare
})
return strings
}
- 삼항연산자 이용하여 n번째 인덱스의 문자열이 같을 경우와 다를 경우 분기
- 같을 경우 : 전체 문자열 비교
- 다를 경우 : n번째 인덱스 문자열
=> 더 간단한 방법
function solution(strings, n) {
return strings.sort((a, b) =>
a[n] === b[n]
? a.localeCompare(b)
: a[n].localeCompare(b[n]));
}
- 처음부터 localeCompare 사용하지 않고 n번째 문자열만 비교연산자 이용하여 비교
- 같을 경우 문자열 전체 비교
- 다를 경우 해당 인덱스 문자열만 비교
- localeCompare라는 메서드를 처음 알았음, 그러나 sort만 이용하는 것이 더 빨라보임
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 1단계 - 문자열 내 p와 y의 개수 (javascript) (0) | 2022.07.17 |
---|---|
[프로그래머스] 1단계 - 평균 구하기 (javascript) (0) | 2022.07.13 |
[프로그래머스] 1단계 - 핸드폰 번호 가리기 (javascript) (0) | 2022.05.31 |
[프로그래머스] 1단계 - 행렬의 덧셈 (javascript) (0) | 2022.05.30 |
[프로그래머스] 1단계 - x만큼 간격이 있는 n개의 숫자 (javascript) (0) | 2022.05.27 |
댓글