원하는 것은 뭐든지
99클럽 코테 스터디 3일차 TIL , 문자열 내 마음대로 정렬하기 본문
반응형
문제
풀이
정렬은 간단하게 풀이가 가능한데 여기서는 주어진 문자열에 n에 해당하는 인덱스를 기준으로 정렬하는 문제다.
Arrays.sort를 사용하고 Comparator를 사용해 비교방법을 재정의 해주면 된다.
제출 1 - 정답
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, new Comparator<String>(){
public int compare(String s1, String s2){
char c1 = s1.charAt(n);
char c2 = s2.charAt(n);
if(c1 == c2){ //n인덱스의 값이 같을 경우 사전순으로
return s1.compareTo(s2);
}else if(c1 < c2){
return -1;
}else{
return 1;
}
}
});
return strings;
}
}
n인덱스의 값이 같다면 본래 s1, s2의 사전순으로 정렬한다.
제출 2 - 정답
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, new Comparator<String>(){
public int compare(String s1, String s2){
char c1 = s1.charAt(n);
char c2 = s2.charAt(n);
if(c1 == c2){
return s1.compareTo(s2);
}else {
return Character.compare(c1,c2);
}
}
});
return strings;
}
}
Character.compare로 줄여 조건문의 사용을 줄이고 명확하게 표현
s1.compareTo(s2)
String 클래스의 compareTo는 String이 구현하는 Comparable 인터페이스 중 하나다.
String 객체를 사전순으로 정렬할 때 사용 된다.
문자열의 유니코드를 기반으로 비교하고 정수를 반환한다.
String.compareTo 예제
public class CompareToExample {
public static void main(String[] args) {
String str1 = "apple";
String str2 = "banana";
String str3 = "apple";
int result1 = str1.compareTo(str2); // 음 (str1 < str2)
int result2 = str1.compareTo(str3); // 0 (str1 == str3)
int result3 = str2.compareTo(str1); // 양 (str2 > str1)
System.out.println("Result1: " + result1); // -1
System.out.println("Result2: " + result2); // 0
System.out.println("Result3: " + result3); // 1
}
}
Character.compare(c1,c2)
두 개의 character값을 비교하는 메서드이다.
두 값을 비교해서 정수를 반환한다.
Character.compare 예제
public class CharacterCompareExample {
public static void main(String[] args) {
char c1 = 'a';
char c2 = 'b';
char c3 = 'a';
int result1 = Character.compare(c1, c2); // 음 (c1 < c2)
int result2 = Character.compare(c1, c3); // 0 (c1 == c3)
int result3 = Character.compare(c2, c1); // 양 (c2 > c1)
System.out.println("Result1: " + result1); // -1
System.out.println("Result2: " + result2); // 0
System.out.println("Result3: " + result3); // 1
}
}
TIL
- Comparator의 사용방법을 다시 한번 익혔다.
- String과 Character의 compare 동작을 익혔다.
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 5일차 TIL , 전화번호 목록 (0) | 2024.07.26 |
---|---|
99클럽 코테 스터디 4일차 TIL , JadenCase 문자열 만들기 (0) | 2024.07.25 |
99클럽 코테 스터디 2일차 TIL , x만큼 간격이 있는 n 개의 숫자 (1) | 2024.07.23 |
99클럽 코테 스터디 1일차 TIL , n^2 배열 자르기 (4) | 2024.07.22 |
[JAVA][백준] 2304 - 창고 다각형 (0) | 2024.07.20 |
Comments