본문 바로가기

BackEnd/Java

[백준 문제 1152번] 단어의 개수 문제

728x90
반응형

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

 

문제 1152) 단어의 개수
문제)
영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.


입력)
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력)
첫째 줄에 단어의 개수를 출력한다.
NO 예제 입력 예제 출력
1 The Curious Case of Benjamin Button 6
2  The first character is a blank 6
3 The last character is a blank  6

 

정답 코드)

import java.util.Scanner;

public class Main {

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		String a = sc.nextLine();
		
		String b[] = a.split(" ");
		
		int num = 0;
		
		for(int i=0; i<b.length; i++) {
			if(b[i] != "") {
				num++;
			}
		}
		
		System.out.println(num);
	}
}


1. 문자열 a를 먼저 입력받고 공백(" ")에 따라 배열에 넣을 수 있도록 split을 이용합니다.
2. 글자가 시작될 때와 마무리 될 때의 공백 때문에 만들어지는 배열은 인식하지 않습니다.
3. 따라서 만약 값이 빈칸이 아니라면 num이 1씩 증가하도록 만듭니다.
4. 마지막으로 num 값을 출력합니다.

 

이 문제는 제가 5번을 틀렸습니다. 왜냐하면 첫 번째와 마지막의 공백이 출력되면 안되는지 몰랐기 때문입니다.

 

그래서 공백을 넣어서 실행해보니 공백의 수만큼 값이 증가해 조건을 걸어주어야 겠다고 생각했습니다.

 

if문을 이용해 공백이 아니면 num의 값이 증가하도록 조건을 주었고 최종적으로 결과를 도출할 수 있었습니다.

 

좀 더 문제를 잘 읽어보고 이해를 잘 해야겠어요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형