백준 1181번을 푸는 도중
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
compareTo() 함수를 알게되었다.
compareTo 함수는 문자열 비교와 숫자 비교가 가능하다.
숫자 비교는 1,0,-1 을 단순하게 return 해주는 반면
문자열 비교는 다양한 return 값을 보내준다.
숫자열 비교
public class Test{
public static void main(String[] args){
int x = 1;
int y = 2;
System.out.println(Integer.compare(x,y)); // -1
System.out.println(Integer.compare(x,1)); // 0
System.out.println(Integer.compare(x,2)); // 1
}
}
문자열 비교
public class CompareToTest{
public static void main(String[] args){
String str = "abcd";
// 1) 비교대상에 문자열이 포함되어있을 경우
System.out.println( str.compareTo("abcd") ); // 0 (같은 경우는 숫자나 문자나 0을 리턴)
System.out.println( str.compareTo("ab") ); // 2
System.out.println( str.compareTo("a") ); // 3
System.out.println( str.compareTo("c") ); // -2
System.out.println( "".compareTo(str) ); // -4
// 2) 비교대상과 전혀 다른 문자열인 경우
System.out.println( str.compareTo("zefd") ); // -25
System.out.println( str.compareTo("zEFd") ); // -25
System.out.println( str.compareTo("ABCD") ); // 32
}
}
출처: https://mine-it-record.tistory.com/133 [나만의 기록들:티스토리]
문자열은 반환값이 무궁무진하다.
이유
문자열을 비교할 때
비교할 문자가 포함되어있다면 그 문자 길이의 차이값을 반환해준다
ex) "abcd" 와 "ab"를 비교 -> return -2
ex) "abcd" 와 "a" 를 비교 -> return -3
ex) "abcd" 와 "c" 를 비교 -> return -2
여기서 abcd 와 c 를 비교했는데 return -3 이 나와야 하지 않나?
-> compareTo는 같은 위치만 비교를 하기때문에 같은위치가 다를경우 아스키코드 값의 차이를 반환해준다.
a 와 c 를 비교 a = 97 , c = 99 -> a - c = -2
비교할 문자가 아예 다르다면
똑같이 아스키코드 값 차이를 반환해준다!
300x250
LIST
'개발 D > Java' 카테고리의 다른 글
[java] Java 다운로드 및 환경변수 설정 (0) | 2023.12.19 |
---|---|
[java] 최소 공배수 구하기(lcm) (1) | 2023.12.18 |
[java] 최대공약수 구하기(gcd) (0) | 2023.12.18 |
[java] Set (1) | 2023.12.13 |
[java] Comparator을 이용한 정렬 (0) | 2023.12.13 |