Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- axios
- react-redux
- redux-toolkit
- java
- 항해99
- createSlice
- Python
- 알고리즘
- useDispatch
- Algorithm
- 테코테코
- 이코테
- 자바
- 프로그래머스
- 리액트
- programmers
- 코딩테스트합격자되기
- redux-saga
- 항해플러스
- Get
- json-server
- SW
- react-router
- react
- redux
- sw expert academy
- C++
- JavaScript
- 매일메일
- maeil-mail
Archives
- Today
- Total
Binary Journey
[프로그래머스] 문자열 내 마음대로 정렬하기 본문
반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
문제는 이렇다.
** Javascript
function solution(strings, n) {
return strings.sort((a, b) => a[n].localeCompare(b[n]) || a.localeCompare(b));
}
문제 풀다보면 javascript 능력자들의 코드들을 볼 수 있는데 드디어 나도!!! 한 줄의 간지를 드디어 해봤다!
다른 사람 풀이 중에 내 풀이랑 같은 건 아직 없는 것 같다! ^_____________________________^
localeCompare 도 이번에 처음 알았다.
String.prototype.localeCompare()
The localeCompare() 메서드는 기준 문자열과 비교했을 때 비교 대상 문자열이 정렬상 전에 오는지, 후에 오는지 혹은 같은 순서에 배치되는지를 알려주는 숫자를 리턴합니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
추가적으로 설명을 보태면 알파벳이 locale 를 구분하여 전후관계를 알려준다.
예시로 콘솔창에
let a = ["가", "희", "넘", "고", "루"];
a.sort((a, b) => a.localeCompare(b));
console.log(a);
를 작성하면
["가", "고", "넘", "루", "희"] 로 정렬된 것을 볼 수 있다.
주의할 점은 공백이 있는 경우 공백도 고려되어 정렬된다. 그래서 글자 자체만 비교해야 한다면 공백 제거를 한 뒤에 사용하는 것이 좋다.
** Java (2021-09-07 추가)
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Collections.sort(Arrays.asList(strings), new Comparator<String>() {
public int compare(String s1, String s2) {
if (Objects.equals(0, s1.split("")[n].compareTo(s2.split("")[n]))) {
return s1.compareTo(s2);
}
return s1.split("")[n].compareTo(s2.split("")[n]);
}
});
return strings;
}
}
** Python (2021-09-07 추가)
cmp_to_key 한 번 써봄
from functools import cmp_to_key
def solution(strings, n):
def string_compare(s1, s2):
if s1[n] == s2[n]:
if s1 > s2:
return 1
elif s1 == s2:
return 0
else:
return -1
return s1 - s2
else:
if s1[n] > s2[n]:
return 1
elif s1[n] == s2[n]:
return 0
else:
return -1
return sorted(strings, key = cmp_to_key(string_compare))
반응형
'프로그래머스 > level 1' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별 (0) | 2021.07.22 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 (0) | 2021.07.21 |
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2021.07.21 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2021.07.20 |
[프로그래머스] 직사각형 별찍기 (0) | 2021.07.20 |