설명
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
입력
첫 줄에 길이가 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 |