[Java] MaxWord

Minji Kim·2021년 7월 26일
0

Java

목록 보기
3/9
post-thumbnail

MaxWord

프로그램 설명

여러 문장으로 구성되어 있는 문자열을 입력 받은 뒤, 해당 문자열에서 가장 단어의 개수가 많은 문장을 찾아서 그 문장 내에 있는 단어의 개수와 해당 문장을 출력한다.

문장의 구분은 ., !, ?이고, 단어의 구분은 공백이다.


우선 입력 받은 문자열을 문장으로 구분하여 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();
	}
}

실행 결과

profile
블로그 이전 mimah.tistory.com

0개의 댓글