문제풀이 - String(문자열) :: 3. 문장 속 단어

문제

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

입력

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

출력

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

예시 입력 1

it is time to study

예시 출력 1

study

🎇 Solution.java

split()을 이용한 풀이

import java.util.Scanner;
  
class Main {
  
  public String solution(String str) {
    String answer = "";
    int m = 0;
    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 T = new Main();
    
    Scanner kb = new Scanner(System.in);
    
    String str = kb.nextLine();
    
    System.out.print(T.solution(str));

  }
}

indexOf()와 substring()을 이용한 풀이

import java.util.Scanner;
  
class Main {
  
  public String solution(String str) {
    String answer = "";
    int m = 0;
    int 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 T = new Main();
    
    Scanner kb = new Scanner(System.in);
    
    String str = kb.nextLine();
    
    System.out.print(T.solution(str));

  }
}

💭 정리

String[] s = str.split(" ") -> 문자열을 잘라서 배열로 변환
str.indexOf(" ") -> 문자가 처음 발견되는 인덱스를 반환, 만약 찾지 못했을 경우 -1을 반환
str.substring(3) -> 문자열의 3번째부터 마지막까지 문자 추출
str.substring(0, 3) -> 문자열의 0번째부터 3번째 앞 문자까지 추출

좋은 웹페이지 즐겨찾기