본문 바로가기
Algorithm/Baekjoon

[java] 문장 속 단어

by 수짱수짱 2023. 2. 4.
 

설명

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

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

입력

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

출력

첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한

단어를 답으로 합니다.


예시 입력 1 

it is time to study

예시 출력 1

study

package inflearn;

import java.util.Scanner;

public class Str3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        String answer = "";

        // 1. split 메소드 사용 방법
        String[] strArr = str.split(" "); // 공백을 기준으로 자름
        int len = Integer.MIN_VALUE;

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

        System.out.println(answer);

        // 2. indexOf, subString 사용 방법
        Str3 str3 = new Str3();
        System.out.println(str3.solution(str));
    }

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

        while((pos = str.indexOf(" "))!= -1){ // 띄어쓰기를 발견하지 못하면 indexOf는 -1을 return. "it is time to study"에서는 pos가 2로 return
            String tmp = str.substring(0, pos); // 0번부터 pos-1 까지 잘라내라.
            int len = tmp.length();

            if(len > min){ // >=는 사용X, 같은 길이중 가장 앞쪽에 위치한 단어를 답으로 해야 하므로
                answer = tmp;
                min = len;
            }

            str = str.substring(pos+1); // "is time to study"가 된다
        }

        if(str.length() > min) answer = str; // 마지막 단어 처리 필요. 마지막 단어는 pos가 -1 이므로

        return answer;
    }
}

 

1. split을 이용한 방법

2. indexOf, subString을 이용한 방법

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준|Baekjoon] C++ / 10951: A + B - 4  (0) 2022.08.09
[백준|Baekjoon] C++ / 10871: X보다 작은 수  (0) 2022.08.09