문자열 내 마음대로 정렬하기
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
예시
strings | n | return |
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
코드 해석 및 전체 코드
1. 조건에 충족하기 위하여 문자열을 먼저 정렬한다.
2. 주어진 n번째 글자를 기준으로 오름차순으로 정렬한다.
1. 조건에 충족하기 위하여 문자열을 먼저 정렬한다.
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전 순으로 앞선 문자열이 앞쪽에 위치합니다.
주어진 n번째 글자만으로 정렬한다면 n번째가 같을 경우 정렬이 불가능하며, 조건을 충족시키지 못한다.
입출력 예시 2번 역시 "abce"와 "abcd" 의 2번째 문자는 c로 같지만, 3번째는 d가 e보다 작기 때문에 문제가 발생한다. 그러므로 미리 정렬을 한 후 n번째 문자를 기준으로 정렬을 한다.
2. 주어진 n번째 글자를 기준으로 오름차순으로 정렬한다.
문자열 중 특정 문자를 반환하는 substring() 메서드를 사용하여 두 문자를 비교한다.
String 문자열 비교 compareTo() 메소드
문자열 비교 후 정렬을 하기 위하여 compareTo() 메서드를 사용하였다.
정렬을 할 때 단순히 두 값 중 어느 값이 큰지만 알면 되기 때문에, 비교가 불가능한 지점에서 문자의 아스키 값을 비교하여 두 값의 차를 반환해주는 compareTo() 메서드를 사용하였다.
"abcd".compareTo("abcc"); // 1 |
전자가 클 경우 : 양수
같은 경우 : 0
전자가 작을 경우 : 음수
문자열 자르기 substring() 메소드
특정 문자열부터 반환하는 메서드이다.
String str = "abcd" str.substring(1); // "bcd" str.substring(1, 2); // "b" |
str.substring(1);
요소를 한 개만 적을 시 문자열 요소 1부터 끝까지 반환한다.
str.substring(1, 2);
두 개를 적을 시 문자열 요소 1부터 요소 2까지 반환한다.
class Solution {
public String[] solution(String[] strings, int n) {
for(int i = 0; i < strings.length - 1; i++){
for(int j = 0; j < strings.length - 1 - i; j++){
if(strings[j].compareTo(strings[j + 1])> 0){
String temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
for(int i = 0; i < strings.length - 1; i++){
for(int j = 0; j < strings.length - 1 - i; j++){
if(strings[j].substring(n, n + 1).compareTo(strings[j + 1].substring(n, n + 1))> 0){
String temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
return strings;
}
}
'코딩 테스트 > [JAVA] programmers 코딩 테스트 연습' 카테고리의 다른 글
[Programmers/JAVA] 소수 찾기 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.15 |
---|---|
[Programmers/JAVA] 행렬의 덧셈 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.14 |
[Programmers/JAVA] 정수 내림차순으로 배치하기 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.13 |
[Programmers/JAVA] x만큼 간격이 있는 n개의 숫자 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.13 |
[Programmers/JAVA] 모의고사 / 프로그래머스 코딩 테스트 연습 (0) | 2021.07.12 |
댓글