2025. 3. 21. 17:40ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/18409

접근 방법 - 문자열 관련 기초 연산
백준의 18409번 문제는 문자열에 대한 기초적인 연산을 요구하는 문제이다.
해당 문제는, 입력으로 주어지는 문자열에 있어 모음(a, e, i, o, u)이 총 몇 개 있는지를 구하여 출력하면 되는 문제이다.
문제의 지문이 외국어로 작성되어 있어, 필자는 아래의 해석본을 참고하며 문제를 해결하였다.
아래 링크에 있는 해석본을 참고하면서 문제를 이해하고 해결을 시도해 보면 되겠다.
https://www.acmicpc.net/board/view/92118
문자열의 요소들을 하나씩 모두 접근하여 모음에 해당하는 알파벳 개수를 구하면 되는, 매우 간단한 원리를 활용하면 된다.
이미 설명을 다 한 것 같으나 자세한 설명은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 문자열의 길이(n)와 문자열(st)을 입력받는다.
(필자의 경우에 n은 형식적으로만 입력받도록 하였고, 실제로 활용하지는 않았다.)
2) 모음의 개수를 카운팅 할 변수 cnt를 0으로 초기화하여 선언해 둔다.
3) st의 크기만큼 반복문을 수행하여, st의 문자를 하나씩 탐색하면서 아래의 연산을 취한다.
- 현재 탐색하고 있는 문자가 'a', 'e', 'o', 'u', 'i' 중 하나에 속한다면, cnt에 1을 더하여 모음의 개수를 추가한다.
4) 위 연산이 모두 완료되었다면, 최종적으로 저장된 cnt의 값을 출력한 뒤 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 18409번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
cin.ignore();
string st;
cin >> st;
int cnt = 0;
for (int i = 0; i < n; i++) {
if (st[i] == 'a' || st[i] == 'e' || st[i] == 'o' || st[i] == 'u' || st[i] == 'i') {
cnt++;
}
}
cout << cnt << endl;
}
제출 결과

(2023.06.11 백준 18409번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 20492번 세금 (C++/cpp) (0) | 2025.03.30 |
---|---|
[백준 BOJ] 1302번 베스트셀러 (C++/cpp) (0) | 2025.03.29 |
[백준 BOJ] 6778번 Which Alien? (C++/cpp) (0) | 2025.03.16 |
[백준 BOJ] 5928번 Contest Timing (C++/cpp) (0) | 2025.03.16 |
[백준 BOJ] 7785번 회사에 있는 사람 (C++/cpp) (0) | 2025.03.07 |