본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #01-03 3. 문장 속 단어

문제

설명

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

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

 

입력 

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

 

출력 

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

 

 

 

코드
import java.util.Scanner;

public class Main1_3 {
    // 문장 속 단어. 문장 속에서 가장 긴 단어 출력

    // 1. split() 사용
    public String Solution(String str) {
        String answer ="";
        int m = Integer.MIN_VALUE;
        String[] s = str.split(" "); // 공백으로 분리해서 각 단어를 배열에 넣기
        for(String x : s) {
            //System.out.println(x);
            int len = x.length();
            if(len>m) {
                m=len;
                answer = x;
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main1_3 T = new Main1_3();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(T.Solution(str));
    }
}

 

 

import java.util.Scanner;

public class Main1_3 {
    // 문장 속 단어. 문장 속에서 가장 긴 단어 출력

    // 2. indexOf() + substring() 사용
    public String Solution(String str) {
        String answer ="";
        int m = Integer.MIN_VALUE, pos;
        while((pos=str.indexOf(' ')) != -1) {
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            if(len>m) {
                m=len;
                answer = tmp;
            }
            str = str.substring(pos+1); // 첫 번째 단어를 제외한 문장으로 while 작업 반복
        }
        if(str.length()>m) answer=str; // 마지막 단어는 공백이 없으니까 예외로 비교 및 처리

        return answer;
    }
    
    public static void main(String[] args) {
        Main1_3 T = new Main1_3();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(T.Solution(str));
    }
}

 

 

 

결과

 

 

 

알게된 점

1. split()

https://rookie-programmer.tistory.com/9

 

[JAVA] 자바 split()

설명 split()은 특정 문자를 기준으로 문자열을 잘라줍니다. 예시 import java.util.Scanner; public class Main { public static void main(String[] args) { String str = "apple banana orange"; String[] s =..

rookie-programmer.tistory.com

 

2. indexOf()

https://rookie-programmer.tistory.com/10

 

[JAVA] 자바 indexOf()

설명 indexOf()는 특정 문자나 문자열의 인덱스 값을 반환해준다. 예시 import java.util.Scanner; public class Main { public static void main(String[] args) { String str = "apple banana orange"; System.o..

rookie-programmer.tistory.com

 

3. substring()

https://rookie-programmer.tistory.com/11

 

[JAVA] 자바 substring()

설명 substring()은 인덱스 값을 지정해 문자열을 자르는 방법이다. 단, substring(int startIndex, int endIndex)처럼 처음과 끝 값을 모두 넣어 사용할 경우에는 startIndex에서부터 endIndex-1된 위치 값까지의..

rookie-programmer.tistory.com