습관처럼
백준 1152 - 단어의 개수 본문
https://www.acmicpc.net/problem/1152
문제 설명
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
문제 접근
초기 접근은 공백(' ')인 경우와 !=(' ')인 경우로 나누어 풀었지만 개행문자 등으로 오류가 발생하여, 문자의 정의를 알파벳으로 정의했기때문에 알파벳의 아스키코드를 활용하여 문제를 해결하였다.
코드
#include<iostream>
#include <cstring>
#include <string>
using namespace std;
int ans=0;
int main(){
string str;
getline(cin,str);
int i=0;
// 나만의 규칙 (공백-문자)를 단어로 간주한다.
while(i<str.size()){
if(i==0){
if(str[0]!=' ') ans+=1; // 규칙과 다른 반례: 처음 시작이 문자인 경우 +1
//기본 (공백-문자)경우
else if(str[i]==' '&&(str[i+1]>=65&&str[i+1]<=122)) ans+=1;
}
else{
if(str[i]==' '&&(str[i+1]>=65&&str[i+1]<=122)) ans+=1; //기본 (공백-문자)경우
}
i++;
}
cout<<ans<<"\n";
return 0;
}
funny algorithms :0 ~
'Algorithms > BOJ' 카테고리의 다른 글
백준 2309 - 일곱 난쟁이 (0) | 2020.02.07 |
---|---|
백준 1120 - 문자열 (0) | 2020.02.06 |
백준 14503 - 로봇 청소기 (0) | 2020.02.05 |
백준 2455 - 지능형 기차 (0) | 2020.02.04 |
백준 7569 - 토마토 (0) | 2020.01.29 |