2022. 5. 1. 01:59ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/1264
접근 방법 - 문자열에 대한 조건문 응용문제
백준의 1264번 문제는 문자열과 조건문을 응용하여 해결해야 하는 문제이다.
해당 문제는, 입력받은 각 문자열에 대해 속해있는 모음의 개수를 출력해야 하는 문제이다.
여기서, 영어 알파벳에 대한 모음은 문제에도 기재되어있다시피 a, e, i, o, u 이렇게 5가지가 있다.
필자는 대문자와 소문자의 경우를 모두 고려하여 조건문을 배치하였고, 이를 이용하여 모음의 개수를 카운팅 하였다.
이때 입력받는 문자열에 공백이 포함되어있기 때문에 이를 고려하며 코드를 작성해야 한다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 무한 반복문을 구현하여, 공백을 포함한 문자열(st)을 입력받는다.
(여기서, "#"만 입력받았을 경우 반복문을 즉시 종료한다.)
2) 모음의 개수를 저장할 변수 num을 0으로 초기화하여 선언한다.
3) st의 길이만큼 반복문을 실행하며, 아래의 연산을 취한다.
- 우선 소문자의 모음을 카운팅 한다. 현재 위치의 문자가 a, e, i, o, u 중 하나라면 num에 1을 더한다.
- 다음으로 대문자의 모음을 카운팅 한다. 현재 위치의 문자가 A, E, I, O, U 중 하나라면 num에 1을 더한다.
4) 모음 개수의 측정이 끝났다면, 최종적으로 저장된 num을 출력한다.
5) 1) ~ 4)의 과정을 무한으로 반복 실행하며, 해당 반복문이 종료될 시 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;
//백준 1264번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while (1) {
string st;
getline(cin, st);
if (st == "#") { break; }
int num = 0;
for (int i = 0; i < st.length(); i++) {
if (st[i] == 'a' || st[i] == 'e' || st[i] == 'i' || st[i] == 'o' || st[i] == 'u') {
num++;
}
else if (st[i] == 'A' || st[i] == 'E' || st[i] == 'I' || st[i] == 'O' || st[i] == 'U') {
num++;
}
}
cout << num << endl;
}
}
제출 결과
(2022.04.16 백준 1264번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 15964번 이상한 기호 (C++/cpp) (0) | 2022.05.05 |
---|---|
[백준 BOJ] 2530번 인공지능 시계 (C++/cpp) (0) | 2022.05.03 |
[백준 BOJ] 10872번 팩토리얼 (C++/cpp) (0) | 2022.05.01 |
[백준 BOJ] 15680번 연세대학교 (C++/cpp) (0) | 2022.04.23 |
[백준 BOJ] 16430번 제리와 톰 (C++/cpp) (0) | 2022.04.17 |