문제
프로그래머스 문제
내 풀이
- 문자열.charCodeAt(인덱스) -> 유니코드로 해당 인덱스의 문자 찾아줌
function solution(strings, n) {
return strings.sort().sort((a, b) => a.charCodeAt(n) - b.charCodeAt(n));
}
개선점
- localeCompare 메소드 처음 봐서 갖고왔다. 두 문자열의 사전순으로 비교해준다고 한다.
- 기준문자열.localeCompare(비교문자열) -> 비교문자열이 기준문자열보다 뒤에 있으면 -1, 앞에 있으면 1, 같으면 0
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
- 아래는 아이디어가 좋아서 갖고왔다. 우선 n번째 문자를 모든 문자의 머리에 붙이고 sort()로 비교한 다음 앞머리에 붙은 문자열을 다시 뗀다.
function solution(strings, n) {
var answer = [];
for (var i = 0; i < strings.length; i++) {
var chu = strings[i][n];
strings[i] = chu + strings[i];
}
strings.sort();
for (var j = 0; j < strings.length; j++) {
strings[j] = strings[j].replace(strings[j][0],"");
answer.push(strings[j])
}
return answer;
}