본문으로 바로가기
728x90
반응형

▷ 문제

한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.

문장속의 각 단어는 공백으로 구분됩니다.

* 입력

첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.

* 출력

첫 줄에 가장 긴 단어를 출력합니다.

가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 합니다.

▷ 입력 예시

it is time to study

▷ 출력 예시

study

▷ 풀이

1. indexOf와 subString 이용

import java.util.Scanner;

public class Main {
    public String solution(String str){
        String answer = "";
        int max = Integer.MIN_VALUE, pos;

        while((pos = str.indexOf(' ')) != -1){
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            if (len > max) {
                max = len;
                answer = tmp;
            }
            str = str.substring(pos + 1);
        }

        if(str.length() > max){
            answer = str;
        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.nextLine();
        System.out.println(main.solution(str));
    }
}

 

2. 배열을 이용한 풀이

import java.util.Scanner;

public class Main {
    public String solution(String str){
        String answer = "";
        int max = Integer.MIN_VALUE, pos;
        String[] strArr = str.split(" ");

        for (String x : strArr) {
            int len = x.length();
            if(len > max){
                max = len;
                answer = x;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.nextLine();
        System.out.println(main.solution(str));
    }
}

▷ 핵심 키워드

1. max값을 선언할 때 Integer.MIN_VALUE을 이용하여 초기화하는 방법을 사용할 수 있다.

 

반응형