상세 컨텐츠

본문 제목

< 백준 BaekJoon : 1152번 단어의 개수 > C++

C++/Baekjoon

by J2on 2022. 1. 22. 19:14

본문

 << 문제 >>

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

 

1152번: 단어의 개수

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

www.acmicpc.net

입력된 문자열이 몇 개의 단어로 이루어져 있는지 출력하는 문제

 

* 주어지는 문자열

 - 길이 < 1,000,000

 - 공백 한 개로 구분

 - 공백으로 시작&끝 가능

 

<< 코드 >>

#include <iostream>
using namespace std;

int main() {
  // 문자열을 입력받을 char배열을 선언 후 '0'으로 초기화
  char word[1000001];
  for (char& ch:word){
    ch = '0';
  }
  // 문자열 입력받음
  cin.getline(word,1000001);

  // 최종 출력할 결과값 변수 설정
  int result = 0;
  
  // 앞서 문자열의 조건 중 "공백으로 시작할 수 있다"에 따라 첫 문자가 공백일 시 ~로 변경
  if (word[0] == ' '){
    word[0] = '~';
  }

  // k번째 지점이 공백이고 k+1이 char배열의 끝이 아닌경우 단어의 끝으로 생각해 한개씩 카운팅 해준다.
  // 이때 마지막 단어가 카운팅이 안되는 것을 생각하여 차후 1을 더해준다.
  for (int k=0; k<1000001; ++k){
    if(word[k] == ' ' && word[k+1] != '\0'){
      ++result;
    }
  }
  
  // 단어가 없이 끝나는 경우 0을 출력, 그 외에 경우에는 1을 추가한 후 출력
  if (word[0] == '~' && word[1] == '\0'){cout << 0;}
  else {cout << result+1;}    

}

 

<< GitHub >>

https://github.com/J2on/BaekjoonOnlineJudge/blob/master/Code/BaekJoon_1152.cpp

 

GitHub - J2on/BaekjoonOnlineJudge: My Study

My Study. Contribute to J2on/BaekjoonOnlineJudge development by creating an account on GitHub.

github.com

 

관련글 더보기

댓글 영역