Algorithm/inflearn

문장 속 단어

마닐라 2021. 9. 2. 10:58

1.split 사용

import java.util.Scanner;

class Main {
    public String solution(String str) { //str은 문장임
        String answer = ""; //가장 긴 단어가 들어갈거임
        int m = Integer.MIN_VALUE;

        String[] s = str.split(" ");

        for(String x : s){
            int len = x.length();
            if(len>m){
                m = len;//길이가 m보다 크면 len에 넣어라
                answer = x; // 그리고 해당 길이의 단어를 answer에 넣어라.
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);

        String str = kb.nextLine(); //한 줄을 읽어들임

        System.out.println(T.solution(str));
    }
}

 

2.indexOf, substring 사용

import java.util.Scanner;

class Main {
    public String solution(String str) { //str은 문장임
        String answer = ""; //가장 긴 단어가 들어갈거임
        int m = Integer.MIN_VALUE, pos;

        while((pos=str.indexOf(' '))!=-1){
        //띄어쓰기가 있으면 true, 띄어쓰기가 있는 인덱스를 pos에 대입
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            //같거나 클때로 하게되면 뒤쪽에 같은 길이의 단어가 나올 때 변경이 됨
            if(len>m){
                m=len;
                answer=tmp;
            }
            //띄어쓰기가 있는 인덱스 다음부터 끝까지 다시 짤라냄
            str=str.substring(pos+1);
       }
        //마지막 단어는 띄어쓰기가 없기 때문에 마지막 단어 처리 필요.
        if(str.length()>m) answer = str;

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);

        String str = kb.nextLine(); //한 줄을 읽어들임

        System.out.println(T.solution(str));
    }
}