[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()는 사전적 정렬순이다.