티스토리 뷰
1. 문제 해석
strings 배열 안의 배열에서 n번째 문자를 기준으로 오름차순을 한다.
문자가 같을 경우 문자열 전체로 따진다.
2. 문제 해결 방법
sort() 메서드를 사용해서 해결해야 한다.
arr.sort(정렬 순서 정의하는 함수) 로 되어 있는 경우
정렬 순서 정의하는 함수 = compareFunction(a, b)
- compareFunction(a, b)의 return 값이 0이면 변경 x
- compareFunction(a, b)의 return 값이 0보다 크면 b를 a 보다 낮은 인덱스로 정렬 ( a > b)
- compareFunction(a, b)의 return 값이 0보다 작으면 a를 b보다 낮은 인덱스로 정렬 (a < b)
sort의 특징을 이용해서 a와 b를 비교해서 return 값을 정해주었다.
function solution(strings, n) {
strings.sort(function(a,b) {
let first = a[n];
let second = b[n];
if (first === second) {
if (a < b) {
return -1;
}
}else {
if (first < second) {
return -1;
}else {
return 1;
}
}
});
return strings
}
더 효율적인 코드
function solution(strings, n) {
strings.sort(function(a,b){
let first = a[n];
let second = b[n];
if(first === second){
return (a > b) - (a < b);
}else{
return (first > second) - (first < second);
}
})
return strings;
}
(a > b) - (a < b) 이런식으로 작성하면 값이 정수로 나오게 됩니다.
왜냐하면!
자바스크립트는 Boolean에 산술 연산자를 대입하면 true는 1, false는 0 으로 인식됩니다.
그래서 return 자체를 비교하여 return 값이 1 혹은 -1이 나오게 해줍니다.
programmers.co.kr/learn/courses/30/lessons/12915
코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1
programmers.co.kr
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Array.prototype.sort()
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
'알고리즘 > level 1' 카테고리의 다른 글
문자열 내 p와 y의 개수 (0) | 2020.12.11 |
---|---|
문자열 내림차순으로 배치하기 (0) | 2020.12.10 |
문자열 다루기 기본 (0) | 2020.12.09 |
서울에서 김서방찾기 (0) | 2020.12.09 |
수박수박수박수?? (0) | 2020.12.09 |
- 코딩테스트
- JOIN
- 백준 7562 node
- 정규표현식
- 534 error
- 회원가입
- smtp error
- Level 1
- 프로그래머스
- 카카오2018[1차]
- 바이러스 dfs
- SQL
- Express
- nodemailer error
- GROUP BY
- 코드테스트
- 백준 7569 node
- Replace
- 숫자야구게임
- left join
- AWS
- 백준
- 토마토3차원
- 로그인
- JavaScript
- sort
- Split
- nodejs
- tolowercase
- slice
- Total
- Today
- Yesterday