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