반응형
문제:
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.
예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/12915
풀이보기
더보기
function solution(strings, n) {
return strings.sort((a, b) => {
if (a[n] === b[n]) {
return a.localeCompare(b);
}
return a[n].localeCompare(b[n]);
});
}
localeCompare를 이용하면 쉽게 풀 수 있다.
localeCompare()는 문자열을 사전 순서 기준으로 비교하는 메서드이다.
만약 n번째 인덱스의 문자가 서로 같다면 제한 조건에서 말했듯이 단어를 사전 순서대로 정렬해주면 된다.
그게 아니라면 그냥 n번째 인덱스의 문자를 사전 순서대로 정렬해주면 된다!
* localeCompare는 a < b이면 → -1, a === b이면 → 0, a > b이면 → 1을 반환한다.
반응형
'코딩 테스트' 카테고리의 다른 글
[프로그래머스 Level 0] 커피 심부름 (0) | 2025.04.25 |
---|---|
[프로그래머스 Level 1] 푸드 파이트 대회 (0) | 2025.04.24 |
[프로그래머스 Level 1] 숫자 문자열과 영단어 (0) | 2025.04.23 |
[프로그래머스 Level 1] 시저 암호 (0) | 2025.04.22 |
[프로그래머스 Level 1] 두 개 뽑아서 더하기 (0) | 2025.04.21 |