- 백준 5637번: 가장 긴 단어
- 문제
단어는 알파벳(a-z, A-Z)과 하이픈(-)으로만 이루어져 있다. 단어와 다른 문자(마침표, 숫자, 심볼, 등등등...)로 이루어진 글이 주어졌을 때, 가장 긴 단어를 구하는 프로그램을 작성하시오.
Apple의 길이는 5, son-in-law는 10, ACM-ICPC는 8이다.
- 입력
입력은 여러 줄, 문단으로 이루어져 있다. 하지만, 10,000글자를 넘지 않는다. 단어의 길이는 100을 넘지 않는다. E-N-D는 입력의 마지막을 의미한다.
- 출력
가장 긴 단어를 소문자로 출력한다. 가장 긴 단어가 여러개인 경우에는 글에서 가장 먼저 나오는 것을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_5637 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int max = 0;
String result = "";
while(true) {
str = str.toLowerCase();
for(int i = 0 ; i < str.length() ; i++) {
if(!((str.charAt(i) >= 'a' && str.charAt(i) <= 'z') || str.charAt(i) == '-')) {
str = str.replace(str.charAt(i), ' ');
}
}
String[] strs = str.split(" ");
for(int i = 0 ; i < strs.length ; i++) {
if(max < strs[i].length() && !strs[i].equals("E-N-D")) {
max = strs[i].length();
result = strs[i];
}
}
if(str.contains("e-n-d")) {
break;
}
str = br.readLine();
}
System.out.println(result.toLowerCase());
}
}