Hayden's Archive

[알고리즘] 백준 1152번 : 단어의 개수 본문

Algorithm

[알고리즘] 백준 1152번 : 단어의 개수

_hayden 2020. 6. 12. 19:15

알고리즘 문제 풀이 : https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

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

www.acmicpc.net

 

백준 단계별로 풀어보기 - 문자열 문제 중 가장 낮은 정답 비율을 기록한 문제. 문제 자체가 어렵다기보다는 고려해야 할 예외가 많다.

단어 사이에 들어가있는 공백, 맨 앞에 있는 공백, 맨 뒤에 있는 공백을 모두 고려했고 이클립스에서는 잘만 돌아가는데 백준에서는 틀렸다고 떴다. 4번 정도 고배를 마시고 내가 놓친 예외가 뭐가 있을까 계속 생각해봤다. 내가 미처 한 가지 고려하지 못한 경우가 있었는데 단어 없이 공백으로만 주어진 경우였다. 내가 짠 코드에서는 공백의 개수를 구해서 공백의 개수+1로 문자의 개수를 구했는데, 그렇게 되면 공백만 주어졌을 때 단어의 개수가 1로 뜨게 된다.

 

내가 작성한 코드

그리하여 문자열이 공백으로만 주어질 경우를 반영하여 다시 짠 코드.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		int count = 0;
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		for(int i=0; i<str.length(); i++) {
			String temp = str.substring(i, i+1);
			if(i==0 && temp.equals(" ")) continue;
			else if(i==str.length()-1 && temp.equals(" ")) continue;
			else if(temp.equals(" ")) count++;
		}
		
		if(str.equals(" ")) System.out.println(count);
		else System.out.println(count+1);
	}
}

 

어느덧 백준 8단계까지 문제 풀이 완료! 아직 가야할 길이 한참 멀지만 계속 꾸준히 나아가자.