[백준/boj] 1152번: 단어의 개수 | C++

2023. 12. 18. 00:16·백준 문제풀이

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

 

1152번: 단어의 개수

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

www.acmicpc.net

 

 

문제 풀이 핵심 

cin 은 공백 이전의 입력값 까지만 받는다.

     => 공백이 포함된 문자열을 입력 받을 수 있는 방법을 아는가?

          => string 헤더파일에 들어있는 getline 함수를 알고있고 사용할 수 있는가!

 

getline 함수 기본 속성

개행 문자 (엔터)가 나올 때 까지 입력을 받는다. 

공백이 포함된 문자열을 하나의 변수에 저장할 수 있다. 

(= 입력을 받고 '\n' 을 버퍼에서 삭제해서 띄어쓰기('\n')로 나누어진 단어 등을 한번에 저장할 수있다.)

 

getline 함수 사용법

1. cin.getline()

char 를 사용해야 함

string 을 사용하면 오류가 남

#include <iostream>
using namespace std;

int main(){
    char hi[10];
    
    cin.getline(hi,10);
    cout << hi << endl;
    return 0;
}

cin.getline (hi,10)의 의미

= 사용자에게 hi 라는 변수에다가 9번 입력 받겠다 (마지막 한칸은 개행문자 '\n' 저장에 사용됨)

= 사용자가 enter 키 누를때까지 or 9번 입력 들어올 때까지 입력 받음 

hi는 문자 배열로 10개의 문자 저장 가능

 

2. getline(cin, string변수명)

string 을 사용해야 함

#include <iostream>
using namespace std;

int main(){
    string str;
    
    getline(cin,str);
    cout << str << endl;
    return 0;
}

getline(cin, str)의 의미

= cin에서 입력된 값을 읽어 str이라는 string 타입의 변수에 값 저장 

 

기존의 cin 함수

=  \n(띄어쓰기)을 구분자(텍스트가 끝남을 표현하는 문자)로 인식하고 그 이후 값은 저장 안함

 

getline 함수

= 기존대로 cin에서 받아온 값의 마지막 '\n' 을 구분자로 인식하여 값을 저장. 그 후 getline 함수는 \n 을 버퍼에서 지워서 띄어쓰기 다음 단어도 하나의 변수에 계속 저장할 수 있게 됨

-> 엔터를 기준으로 문자열 입력을 종료하게 됨

 

문제 풀이 코드

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

int main(){
    string str;
    getline(cin, str);

    int count = 0;

    if(str.empty()){
        cout << count <<endl;
        return 0;
    }

    count = 1;

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

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

    cout << count <<endl;
    return 0;

}

 

기억할 부분 

1. 문자열의 길이를 받는 함수 length 를 사용하려 했으나 해당 변수가 빈값인지 확인하기 위해서는 empty라는 함수 사용하는게 더 편리하다.

사용법 : 문자열이름.empty()

 

'백준 문제풀이' 카테고리의 다른 글

[백준/boj] 1012번: 유기농 배추 | C++  (1) 2024.01.07
[백준/boj] 2178번: 미로 탐색 | C++  (1) 2023.12.30
[백준/boj] 2504번: 괄호의 값 | C++  (1) 2023.12.29
[백준/boj] 2493번: 탑 | C++  (3) 2023.12.24
[백준/boj] 2309번: 일곱 난쟁이 | C++  (0) 2023.12.19
'백준 문제풀이' 카테고리의 다른 글
  • [백준/boj] 2178번: 미로 탐색 | C++
  • [백준/boj] 2504번: 괄호의 값 | C++
  • [백준/boj] 2493번: 탑 | C++
  • [백준/boj] 2309번: 일곱 난쟁이 | C++
c_jm
c_jm
  • c_jm
    c_jm
    c_jm

    🎋 어제보다 발전한 오늘

  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 프로젝트 (6)
      • 백준 문제풀이 (19)
      • 프로그래머스 문제풀이 (4)
      • 공부 (1)
      • 문제 해결 (2)
      • 기타 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker-compose.yml
    글자색
    복붙
    다크모드
    코드블럭
    jquery
    티스토리 다크모드
    docker-compose
    html
    홈서버
    도커컴포즈
    reverse proxy
    백준 #1152 #c++
    도커
    리버스 프록시 서버
    리버스 프록시
    nginx
    docker
    인라인 css
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
c_jm
[백준/boj] 1152번: 단어의 개수 | C++
상단으로

티스토리툴바