문제
나의 답
[pseudo code]
1. loop를 돌며, 각 단어와 해당 단어의 n 값을 key-value로 temp 배열에 담아줌
2. sort()함수를 사용해 알파벳 순서대로 정렬하기
- 만약, val 값이 같다면, str 값으로 비교해서 정렬
- 기본 sort() 함수는 입력받은 문자열을 Unicode 값으로 변환해서 비교하므로, 완전히 알파벳 순이 아님 => 숫자를 비교할 때, 숫자 값을 unicode로 변환하기 때문에 숫자이 경우, 원하는 순서를 얻지 못함. 문자의 경우, 알파벳 순으로 나옴
If compareFn is not supplied, all non-undefined array elements are sorted by converting them to strings and comparing strings in UTF-16 code units order. For example, "banana" comes before "cherry". In a numeric sort, 9 comes before 80, but because numbers are converted to strings, "80" comes before "9" in the Unicode order. All undefined elements are sorted to the end of the array.
- MDN Array.prototype.sort()
function solution(strings, n) {
const temp = [];
let answer = [];
for (let i = 0; i < strings.length; i++) {
temp.push({ val: strings[i][n], str: strings[i] });
}
temp
.sort((a, b) => {
let valA = a.val.toLowerCase();
let valB = b.val.toLowerCase();
if (valA > valB) {
return 1;
} else if (valA < valB) {
return -1;
} else {
let strA = a.str.toLowerCase();
let strB = b.str.toLowerCase();
if (strA > strB) {
return 1;
} else {
return -1;
}
}
})
.map((e) => answer.push(e.str));
return answer;
}
String.prototype.localeCompare()로 처리하는 것 해보기
'항해99_10기 > [2주차] 알고리즘 문제풀이' 카테고리의 다른 글
| [21번] [중급] 소수 만들기 (0) | 2022.11.22 |
|---|---|
| [20번] [중급] 문자열 내림차순으로 배치하기 (0) | 2022.11.22 |
| [17번][중급] 로또의 최고 순위와 최저 순위 (0) | 2022.11.21 |
| [16번][중급] 두개 뽑아서 더하기 (0) | 2022.11.21 |
| [15번][중급] 같은 숫자는 싫어 (0) | 2022.11.21 |