[Lv.1] 문자열 내 마음대로 정렬하기 (✩✩✩✩) - 질문
문제 : https://programmers.co.kr/learn/courses/30/lessons/12915
체감 난이도 : ✩✩✩✩
🔶 내가 한 방법
- 알파벳에 해당하는 숫자를 alpha객체에 정렬함
- strings의 n번째의 알파벳을 alpha객체의 키로 찾아 해당 값인 숫자를 찾는다.
- 변수 obj를 선언하고, { 3: ['abce', 'abcd'], 24: ['cdx'] }; 이런식으로 만든다.
- obj를 돌면서, result 배열에 obj의 값인 배열의 요소를 담음.
배열에 요소가 2개 이상이면 문자순으로 정렬하여 담음. - result를 리턴함.
function solution(strings, n) {
const alpha = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 11, l: 12, m: 13, n: 14, o: 15, p: 16,
q: 17, r: 18, s: 19, t: 20, u: 21, v: 22, w: 23, x: 24, y: 25, z: 26 };
// 1. { 3: ['abce', 'abcd'], 24: ['cdx'] }; 이렇게 만들기
const obj = {};
strings.forEach((el) => {
const number = alpha[el[n]];
if (obj[number]) {
obj[number] = [...obj[number], el];
return;
}
obj[number] = [el];
});
// 2. 같은 순서 있으면 문자순으로 정렬하여 결과값 배열로 출력.
const result = [];
for (const [key, value] of Object.entries(obj)) {
value.sort();
result.push(...value);
}
return result;
}
console.log(solution(['sun', 'bed', 'car'], 1)); // ["car", "bed", "sun"]
console.log(solution(['abce', 'abcd', 'cdx'], 2)); // ["abcd", "abce", "cdx"]
🔶 다른 사람 방법
- 방법1 - n번째 알파벳을 각 string의 젤 앞에 붙여 정렬함.
(n번째 알파벳대로 정렬, n번째 알파벳이 같으면 뒤에 문자를 비교하여 한번에 정렬됨.)
function solution(strings, num) {
const arr = strings.map((el) => el[num] + el); // ['cabce', 'cabcd', 'xcdx']
arr.sort(); // ['cabcd', 'cabce', 'xcdx']
return arr.map((el) => el.slice(1));
}
- 방법2 - sort() 사용 ⬅ sort 사용방법 질문!!
function solution(strings, n) {
var answer = [];
strings.sort((a,b)=>{
if(a[n]>b[n]){
return 1
} else if(b[n]>a[n]){
return -1
} else if(a[n]==b[n]){
if(a>b){
return 1
} else if(a<b){
return -1
} else{
return 0
}
}
})
return strings
}
🔶 피드백
- sort메서드 사용방법 잘 모르겠음.(질문)
Author And Source
이 문제에 관하여([Lv.1] 문자열 내 마음대로 정렬하기 (✩✩✩✩) - 질문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhplus13/Lv.1-문자열-내-마음대로-정렬하기-질문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)