한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한
단어를 답으로 합니다.
it is time to study
study
import java.util.Scanner;
public class Main {
public String solution(String str){
String answer="";
String[] str2=str.split("\\s");
for(int i=0; i < str2.length;i++){
//System.out.println(str2[i]);
if(str2[i].length()>answer.length()){
answer=str2[i];
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner sc= new Scanner(System.in);
String str=sc.nextLine();
System.out.println(T.solution(str));
}
}
split을 이용해 공백을 통해 나누어서 리스트로 변환
변환된 리스트를 순서대로 하나씩 길이를 비교하여 더긴 단어일경우 교체한다.
">"로 해놓았기때문에 같은 길이의 단어가 나와도 맨앞에나온경우가 선택된다.
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 T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.nextLine();
System.out.print(T.solution(str));
}
}
즉 이코드는 빈칸을 찾아서 pos에 저장하고 문자열에 빈칸이 존재할때까지 while을 실행한다.
문자열을 빈칸까지 잘라서 길이를 비교하고 길면 저장 아니면 패스한다.
그리고 빈칸의 위치 뒤부터 다시 시작해서 빈칸이 없을때까지 비교한다.