728x90
취직을 위한 코딩테스트를 준비하면서 기본 문제를 못 푸는 친구가 있어서 준비해봤습니다.
얼마나 효율적으로 푸느냐는 후에 생각해도 괜찮습니다.
일단은 풀어나 봅시다!!의 느낌으로 쉬운 문제부터 하나씩 포스팅하려고 합니다.
https://www.acmicpc.net/problem/1152
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 |