문장 속 단어

문제

설명

한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다.

입력

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

출력

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

예시 입력 1

  it is time to study

해결방법

  • 단어를 분리하여 해당 단어의 길이를 구하고, 최대/최소 값 구하여 비교하는 방법

    // 최대 혹은 최소 값 세팅.
    int a = Integer.MIN_VALUE;
    for( String x : str.split(" ") ) {
      // 하나씩 꺼내면서 최대 혹은 최소 값과 비교
      int len = x.length();
      // 최대 혹은 최소 값 보다 크거나 작으면 바꿔넣기
      if ( len > a ) {
          a = len;
          answer = x;
      }
    }
    
  • 단어를 분리하지 않고, indexOf 로 긁어내면서 비교하는 방법

    // pos에는 구분자의 위치가 저장
    while ((pos = str.indexOf(" ")) != -1) {
      // 0부터 구분자 위치까지 자르면 첫번째 단어
      String x = str.substring(0, pos);
      // 비교.
      int len = x.length();
      if (len > m) {
          m = len;
          answer = x;
      }
      // 비교 다 했으면, 원래 잘라냈던 단어가 없어져야 다음 진행 가능.
      str = str.substring(pos + 1);
      // 마지막에, 구분자 더 없으면 마지막으로 마지막(즉, 남은단어) 단어도 비교
      if (str.length() > m) answer = str;
    }
    

코드

  • 방법1을 사용한 코드
    import java.util.*;
      
    class Main {
        public String solution(String 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;
                    answer = x;
                }
            }
            return answer;
        }
      
        public static void main(String[] args) {
            Main.Main T = new Main.Main();
            Scanner kb = new Scanner(System.in);
            String str = kb.nextLine();
            System.out.print(T.solution(str));
        }
    }
    
  • 방법2를 사용한 코드

    import java.util.*;
      
    class Main {
        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);
            }
            if (str.length() > m) answer = str;
            return answer;
        }
      
        public static void main(String[] args) {
            Main.Main T = new Main.Main();
            Scanner kb = new Scanner(System.in);
            String str = kb.nextLine();
            System.out.print(T.solution(str));
        }
    }
      
    

© 2024. Chiptune93 All rights reserved.