안녕하세요
인포돈 입니다.
백준 알고리즘 1152번 풀이입니다.
* 참고사항
- 개발환경은 eclipse을 기준으로 작성되었습니다.
- java언어를 이용하여 문제를 풀이합니다.
- 알고리즘 문제는 풀이를 보고 해답을 찾는 것도 중요하지만 무엇보다 스스로 풀이를 시도해봐야 합니다!!
(해당 풀이를 보기 전 충분히 문제에 대해 고민해봐야 합니다!)
- 해당 풀이 말고도 수많은 풀이 방법이 존재합니다.
백준 1152 (단어의 개수)
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.
출력
첫째 줄에 단어의 개수를 출력한다.
입력 예시
The Curious Case of Benjamin Button
출력 예시
6
입력 예시
Mazatneunde Wae Teullyeoyo
출력 예시
3
입력 예시
Teullinika Teullyeotzi
출력 예시
2
성공코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str);
int cnt = 0;
while(st.hasMoreTokens()) {
st.nextToken();
cnt++;
}
System.out.println(cnt);
}
}
해당 알고리즘 문제는 정답 확률이 굉장히 낮았습니다. 무려 30% 밖에 되지 않았습니다.
정확한 이유는 모르겠지만, 저는 굉장히 쉽게 풀어가지고 의아하긴 했습니다.
해당 알고리즘을 풀기 위해서 제가 생각해낸 흐름도는 다음과 같습니다.
입력받은 문자열을 " "(공백)으로 구분한다. -> 구분한 문자열을 반복문을 돈다. -> 반복문을 돌면서 count를 한다. -> 출력한다.
굉장히 간단하죠??
코드에도 굉장히 어려운 코드는 1개도 없습니다. 해당 알고리즘에서 그래도 알아야 할 점은 2가지입니다.
StringTokenizer, count
StringTokenizer
문자열을 구분하는 가장 대표적인 객체로 next, hasMoreTokens와 같은 메서드가 있다.
일반적으로 Default값은 " "(공백)으로 구분하여 문자열을 분리해서 Token에 저장합니다!!
count
해당 문자열을 반복문을 돌리면서 개수를 세는 변수를 따로 선언해 줘서 count를 하는 방법입니다. 이거는 사실 대표적으로 사용되는 변수 활용이라고 생각하시면 됩니다.
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘-JAVA]2292번 풀이(벌집) (0) | 2021.04.10 |
---|---|
[백준알고리즘-JAVA]1712번 풀이(손익분기점) (0) | 2021.04.09 |
[백준알고리즘-JAVA]1157번 풀이(단어공부) (0) | 2021.04.07 |
[백준알고리즘-JAVA]2675번 풀이(문자열 반복) (0) | 2021.04.06 |
[백준알고리즘-JAVA]11720번 풀이(숫자의 합) (0) | 2021.04.05 |