티스토리 뷰
Q.1152 단어의 개수
- 영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 단어는 띄어쓰기 하나로 구분된다고 생각한다.
입력 :
- 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다.
출력 :
- 첫째 줄에 단어의 개수를 출력한다.
<소스 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
import java.util.*;
public class Prac {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int answer = 0;
int cntOfWord = 0;
String sentence = sc.nextLine();
sentence += ' '; //아래 if문의 조건식을 만족시키기 위해 문자열 마지막에 공백을 하나 더 추가한다.
for(int i = 0; i < sentence.length(); i++) {
if(sentence.charAt(i) == ' ') { //현재 문자가 공백일 경우
if(cntOfWord != 0) //공백 전의 문자가 공백이 아닐 경우
answer -= (cntOfWord-1); //현재까지 카운트 했던 단어 수 - (공백 이후의 단어 갯수 - 1)
cntOfWord = 0; //공백 이후의 단어는 다시 0으로 초기화 한다.
}
else { //현재 문자가 공백이 아닐 경우
cntOfWord++; //현재 단어의 문자 수 카운트
answer++; //단어 개수도 카운트
}
}
System.out.println(answer);
}
} |
cs |
<실행 결과>
<해법>
* 처음부터 공백을 넣고 입력을 시작하는 경우와 중간에 공백을 여러개 넣고 입력을 할 경우도 고려하여야 한다.
*
- 문제를 해결하기 위해 '현재 단어의 문자 개수 - (현재 단어의 문자 개수 - 1)' 를 하면 단어의 갯수를 카운트 하는 것과 동일한 효과를 지닌다. 이를 answer변수에 저장한다.
- 그 다음 단어 차례에 문자 갯수를 answer 변수와 함께 카운트하여 다시 '현재 단어의 문자 갯수(answer 변수에 1이 카운트 된 상태) - (현재 단어의 문자 개수 - 1)'를 수행, answer 변수에 저장한다. 이를 문자열이 끝날 때 까지 반복하면 answer 변수는 단어의 문자 카운트가 끝날때 마다 하나씩 증가하게 된다.
String.charAt(index) : Stinrg 문자열의 index 위치에 있는 문자를 반환한다.
문제 사이트 및 참고 사이트 : https://www.acmicpc.net/problem/1152
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
※
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준]1157번 단어 공부 (0) | 2017.10.09 |
---|---|
[백준]1차원 배열 사용하기 (0) | 2017.10.08 |
[백준]1065번 한수 (0) | 2017.10.03 |
[백준]4673번 셀프 넘버 (0) | 2017.10.02 |
[백준]if문 사용해보기 (0) | 2017.10.01 |
- Total
- Today
- Yesterday
- 자바 에센셜 실습문제
- 파이썬 예제
- 자바
- 파이썬 함수
- 파이썬 문자열
- 자바스크립트 그래프
- 파이썬 단계적 개선
- 파이썬 클래스
- 자료구조
- 파이썬 선택문
- 웹
- 파이썬 터틀
- 백준 11501
- 파이썬 if문
- css 그리드
- 백준 10451
- 백준 1874
- 파이썬 for
- 파이썬
- 명품 c++ 실습
- 자바스크립트 자료구조
- 파이썬 리스트
- 파이썬 연산자
- 파이썬 진수 변환
- css 박스
- 파이썬 객체
- 백준
- 버츄어박스
- 파이썬 while
- css
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |