한 걸음씩 기록하며
[프로그래머스 코딩테스트] 문자열 내 마음대로 정렬하기 본문
[문자열 내 마음대로 정렬하기]
문제 설명 :
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
⛏제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
📁 입출력 예시
👉🏻 답안
function solution(strings, n) {
let result = strings.sort((a, b) => { // 문자열 내림차순으로 정렬
if(a[n] > b[n]) return 1; // 문자열 n번째 문자 비교하여 오름차순으로 정렬
if(a[n] < b[n]) return -1;
if((a[n] === b[n]) && (a > b)) return 1; // 문자열 n번째 문자가 같을 시, 전체 오름차순으로 정렬
if((a[n] === b[n]) && (a < b)) return -1;
})
return result
}
📑 간단한 설명
sort 정렬하는 것을 좀 더 익히면 좋을 듯 하다.
참고할만한 블로그 https://hianna.tistory.com/409
💪🏻 공부하면 좋을 답안
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
- 내 답안을 간략히 줄여놓은 것 같은 코드다.
- localeCompare은 처음 들어보는 함수였다.
- 앞과 뒤의 문자열을 비교하여 1 혹은 -1을 반환한다.
- ex) 'a'.localeCompare('b')); -> -1
- sort함수와 함께 쓰면 위와 같이 효율적으로 쓸 수 있다.
- 생활코딩 참고 https://opentutorials.org/course/50/91
- 해당 블로그 참고 https://codinghard.tistory.com/18
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] 소수 만들기 (0) | 2022.01.20 |
---|---|
[프로그래머스 코딩테스트] 문자열 내림차순으로 배치하기 (0) | 2022.01.19 |
[프로그래머스 코딩테스트] 모의고사 (0) | 2022.01.19 |
[프로그래머스 코딩테스트] 로또의 최고 순위와 최저 순위 (0) | 2022.01.19 |
[프로그래머스 코딩테스트] 두개 뽑아서 더하기 (0) | 2022.01.19 |
Comments