KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level1
  • 문자열
  • 수학
  • Level 0
  • Level 2
  • Level 1
  • 다이나믹 프로그래밍
  • programmers
  • codeup
  • 백준
  • C++
  • 그래프
  • js
  • 정렬
  • tree
  • LeetCode
  • C
  • 제코베 JS 100제
  • recursion
  • string

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/백준

백준 / String(문자열) / 1152 / 단어의 개수 / C++

2020. 5. 28. 09:42

문제

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

입력

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

출력

첫째 줄에 단어의 개수를 출력한다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	int cnt = 0;
	string str;
	getline(cin, str);

	cnt++;
	for (int i = 0; i < str.length(); i++) {
		if (str[i] == ' ') {
			cnt++;
		}
	}

	if (str[0] == ' ') {
		cnt--;
	}

	if (str[str.length() - 1] == ' ') {
		cnt--;
	}

	cout << cnt << endl;
}

이번 문제는 getline과 cin의 차이점에 대해 알아야한다.

처음에 cin >> str로 입력받았다가 안되서 한참 헤맸다.

cin은 띄어쓰기 전까지 입력받고, 띄어쓰기 포함 입력받으려면 getline(cin, str)을 해줘야한다.

밑의 알고리즘에서는, 단어의 개수는 (띄어쓰기 갯수 + 1) 이므로, 일단 처음에 cnt를 하나 더해준다.

공백이 없을때도 단어의 개수는 하나이기 때문이다.

그리고 처음에 공백이 올때, 마지막에 공백이 올때 cnt를 하나씩 빼준다.

str.length()는 str의 마지막의 다음을 return하므로, 1을 빼주면 str의 길이가된다.

저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

백준 / 그리디 알고리즘 / 11047번 / 동전 0 / C++  (0) 2020.09.23
백준 / String(문자열) / 2908번 / 상수 / C++  (0) 2020.05.28
백준 / String(문자열) / 1157번 / 단어 공부 / C++  (0) 2020.05.27
백준 / String(문자열) / 2675번 / 문자열 반복 / C++  (0) 2020.05.27
    'PS/백준' 카테고리의 다른 글
    • 백준 / 그리디 알고리즘 / 11047번 / 동전 0 / C++
    • 백준 / String(문자열) / 2908번 / 상수 / C++
    • 백준 / String(문자열) / 1157번 / 단어 공부 / C++
    • 백준 / String(문자열) / 2675번 / 문자열 반복 / C++
    KimMinJun
    KimMinJun

    티스토리툴바