https://school.programmers.co.kr/learn/courses/30/lessons/12915
<1번째>
- 주의할 점 : n이 같으면 사전순으로 정렬한다
- => n끼리 문자들을 분류한다
- obj에 [각 n인덱스의 code값]: [문자, 문자...] 이렇게 정리한다.
- key = str.charCodeAt(n) 사용
- Object.entries()를 돌려서 answer에 문자 순서대로 넣기
- 문자들 알파벳순으로 정렬: arr.sort((a, b) => a < b ? -1 : 1)
- object의 key가 integer이면 자동으로 정렬된다
function solution(strings, n) {
var answer = [];
const obj = {};
for (const str of strings) {
const key = str.charCodeAt(n);
if (!obj[key]) {
obj[key] = [str];
} else {
obj[key].push(str);
obj[key].sort((a, b) => a < b ? -1 : 1); // 알파벳 순 오름차순 정렬
}
}
for (const [key, value] of Object.entries(obj)) {
answer.push(...value);
}
return answer;
}
<2번째>
prev.localeCompare(curr)로 사전순으로 정렬
prev가 curr앞이면 -1리턴 (현재순서가 사전순서면)
curr이 prev앞이면 1리턴
n번째가 같으면 문자전체를 localeCompare비교
n번째가 다르면 n번째 문자를 localeCompare비교
function solution(strings, n) {
return strings.sort((a, b) => a[n] === b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n]))
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 소수찾기 - Math.sqrt(n), Set.size() (0) | 2023.06.06 |
---|---|
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2023.06.02 |
[프로그래머스] 햄버거 만들기 JS (0) | 2023.05.29 |
[프로그래머스] 키패드 누르기 (0) | 2023.05.28 |
[프로그래머스] 과일장수 (런타임 에러 문제점 찾는 법) (0) | 2023.05.28 |