꾸준하게
[JS코테] 문자열 내 마음대로 정렬하기 - 다른풀이공부하기 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
(인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.)
[나의풀이]
function solution(strings, n) {
const order = strings.map(x => x[n]).sort();
let arr = strings.sort();
let answer = [];
for(i=0;i<strings.length;i++){
for(j=0;j<strings.length;j++){
if(arr[j][n] === order[i]){
answer.push(arr[j]);
arr.splice(j,1,0);
break;
}
}
}
return answer;
}
[풀이방법]
function solution(strings, n) {
// 1) 배열strings의 요소 중 n번째 글자만을 모아서 오름차순 배열한 배열order 선언
const order = strings.map(x => x[n]).sort();
// 2) 배열strings를 오름차순 배열한 배열arr 선언
let arr = strings.sort();
// 3) 빈 배열answer 선언
let answer = [];
// 4) i=0부터 strings의 길이만큼 반복 ( 배열 order index 0부터 끝까지 )
for(i=0;i<strings.length;i++){
// 5) j=0부터 strings의 길이만큼 반복 ( 배열 arr index 0부터 끝까지 )
for(j=0;j<strings.length;j++){
// 6) arr의 j번째 index의 n번째 글자가 order의 i번째 index와 같을 때
if(arr[j][n] === order[i]){
// 7) 배열 answer의 맨 뒤에 arr[j]를 추가
answer.push(arr[j]);
// 8) 배열arr의 j번째 index를 0으로 변경 (index변경 없이 내용 지우기 위함)
arr.splice(j,1,0);
// 9) j관련 for문 끝냄
break;
}
}
}
return answer;
}
[다른풀이]
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
[풀이방법 - 모르겠다.... 나중에 다시 공부해보자.]
728x90
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코테] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 (0) | 2023.06.01 |
---|---|
[JS코테] 정렬 - K번째수 (0) | 2023.05.31 |
[JS코테] 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어 (0) | 2023.05.20 |
[JS코테] 크기가 작은 부분 문자열 (0) | 2023.05.16 |
[JS코테] 2018 KAKAO BLIND RECRUITMENT[1차] - 비밀지도 (0) | 2023.05.12 |