[HackerRank]-Substring Comparisons
아홉번 째 해커랭크 문제 기초이다.
Sample Input
welcometojava
3
Sample Output
ava
wel
예시 설명
문자열입력한다. k : 3 입력한다.
k 수 마다 나눈다. ex) wel, elc, lco, com … jav, ava까지 모두 자른다. 여기서 사전적 정렬 순으로 작은과 큰값을 출력한다. a부터 사전적 순서이니 ava가 가장 작은값이다.
코드
import java.util.Scanner;
public class Solution {
public static String getSmallestAndLargest(String s, int k) {
String smallest = s.substring(0,k);//wel
String largest = s.substring(0,k);//wel
// Complete the function
// 'smallest' must be the lexicographically smallest substring of length 'k'
// 'largest' must be the lexicographically largest substring of length 'k'
for(int i=1;i<s.length()-(k-1);i++){
String clone = s.substring(i, i+k);
if(smallest.compareTo(clone) > 0) smallest = clone;
if(largest.compareTo(clone) < 0) largest = clone;
}
return smallest + "\n" + largest;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
int k = scan.nextInt();
scan.close();
System.out.println(getSmallestAndLargest(s, k));
}
}
설명
이번에는 살짝 고민했다. 가장작은값과 가장큰값을 처음나눈값으로 초기화한다.
for문을 이용해 값을 나누어 clone에 넣는다.
저번에 쓴 compareTo()로 사전적 정렬한다. smallest와 다른 나눈값보다 크면 smallest를 clone값으로한다.
요약
substring()에 대해서 알기. compareTo()는 사전적 정렬순이다.