-
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
입출력 예
문제 풀이
function solution(strings, n) { strings.sort((a, b) => { let aValue = a[n]; let bValue = b[n]; return aValue === bValue ? (a > b) - (a < b) : (aValue > bValue) - (aValue < bValue); }) return strings; }
풀이입니다.
문자열 strings 를 sort로 정렬합니다.
sort 에서 aValue, bValue에 각각 인덱스 n에 해당하는 값을 넣어주고 비교합니다.
만약 둘이 같으면 기존의 문자 정렬 방식대로 정렬하기 위해 (a > b) - (a < b) 을 리턴해주고
그렇지 않다면 (aValue > bValue) - (aValue < bValue) 을 해줍니다.
이 경우에는 1 or -1 이 나와서 1일 경우 순서가 바뀌고 -1일때는 그대로 정렬되는걸 반복해서
원하는 방식대로 정렬됩니다.
다른 사람들의 풀이
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; }
'코딩 기록 > 자바스크립트 알고리즘' 카테고리의 다른 글
(자바스크립트 알고리즘) 체육복 - kimyang-sun (0) 2020.10.15 (자바스크립트 알고리즘) 소수 찾기 - kimyang-sun (0) 2020.10.14 (자바스크립트 알고리즘) 이상한 문자 만들기 - kimyang-sun (0) 2020.10.12 (자바스크립트 알고리즘) 시저 암호 - kimyang-sun (0) 2020.10.12 (자바스크립트 알고리즘) 콜라츠 추측 - kimyang-sun (0) 2020.10.12 댓글