728x90
    
    
  취직을 위한 코딩테스트를 준비하면서 기본 문제를 못 푸는 친구가 있어서 준비해봤습니다.
얼마나 효율적으로 푸느냐는 후에 생각해도 괜찮습니다.
일단은 풀어나 봅시다!!의 느낌으로 쉬운 문제부터 하나씩 포스팅하려고 합니다.
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 �
www.acmicpc.net
BOJ의 1152번에 대한 링크입니다.
문제 요약
문자열을 입력받고 총 몇 단어로 이루어져 있는가~ 를 출력하는 문제입니다.
접근법
제일 쉽게 떠올릴 수 있는 방법은 문자열을 처음부터 끝까지 반복문을 돌면서 공백의 개수를 카운팅하는 방법입니다. 'Hello World'에서는 공백이 1개로 단어는 2개가 됩니다. 따라서 공백+1이 단어의 개수가 됩니다.
주의점
위 방식에는 몇가지 맹점이 있습니다. 예제 입력 2를 보면 처음부터 공백이 들어있습니다. 해당 경우는 카운팅에서 제외해주어야 합니다. 추가로 문자열 맨 마지막에 공백을 넣는 경우도 따져봐야합니다. 코드로 표현해보면 다음과 같습니다.
C++ 코드
| 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 | #include <iostream> #include <string> using namespace std; int main() {     int num = 0;     string inputString;     getline(cin, inputString);     for (int i = 0; i < inputString.length(); i++)     {         if (inputString.at(i) == ' ')             num++;     }     if (inputString.at(0) == ' ')     {         num = num - 1;     }     if (inputString.at(inputString.length() - 1) == ' ')     {         num = num - 1;     }     cout << num + 1 << endl; } | cs | 
Python 코드
파이썬으로 접근하실때는 split만 잘 사용해도 짧게 끝납니다.
| 1 2 | s = input().split() print(len(s)) | cs | 
이러면 통과가 되더라구요.
728x90
    
    
  '알고리즘 > ps' 카테고리의 다른 글
| [python] BOJ - 2217 로프 (0) | 2020.07.13 | 
|---|---|
| [python] 프로그래머스 - 체육복 (0) | 2020.07.06 | 
| [python] 프로그래머스 - 완주하지 못한 선수 (0) | 2020.07.05 | 
| [BOJ] 백준 15829 Hashing (0) | 2020.07.02 | 
| 그리디 알고리즘을 이용한 문제 (0) | 2019.06.03 | 
