여러 문장으로 구성되어 있는 문자열을 입력 받은 뒤, 해당 문자열에서 가장 단어의 개수가 많은 문장을 찾아서 그 문장 내에 있는 단어의 개수와 해당 문장을 출력한다.
문장의 구분은 .
, !
, ?
이고, 단어의 구분은 공백
이다.
우선 입력 받은 문자열을 문장으로 구분하여 String 배열 strs
에 저장한다.
문장별 단어의 개수를 저장할 int형 배열 nums
를 생성한다.
StringTokenizer 를 이용하여 공백을 기준으로 문장을 자른다.
잘린 단어들의 개수를 아까 생성한 nums
배열에 저장한다.
nums
배열에 저장된 값이 가장 크면, 동일한 index를 가지고 참조하는 strs
배열에 저장된 문장의 길이가 가장 길다는 뜻이다.
따라서 nums
배열에 저장된 값을 비교하고 얻은 idx
값을 이용하여, 가장 긴 문장 내에 있는 단어의 개수와 해당 문장을 출력한다.
import java.util.Scanner;
import java.util.StringTokenizer;
public class MaxWord {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String[] strs = input.split("\\.|!|\\?"); // 문장 구분하여 strs 에 저장
StringTokenizer token = null;
int[] nums = new int[strs.length + 1]; // 문장별 단어의 개수 저장
for (int i = 0; i < strs.length; i++) {
strs[i] = strs[i].trim();
token = new StringTokenizer(strs[i]); // 공백을 기준으로 문장 자름
nums[i] = token.countTokens();
}
int temp = nums[0]; // 단어 수 비교 위해 사용
int idx = 0; // 단어 수가 가장 많은 문장의 index 값 저장
for (int i = 1; i < strs.length; i++) {
if (temp < nums[i]) {
temp = nums[i];
idx = i;
}
}
System.out.println(nums[idx] + "개");
System.out.println(strs[idx]);
sc.close();
}
}