※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 29343번 문제인 Шифровка이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/29343
주어지는 문자열에 대하여, 1 이상 전체 길이 이하의 같은 길이의 접두사와 접미사 쌍 중 1개 이상의 모음을 포함하면서 같은 개수의 모음을 포함하는 쌍의 개수를 구하는 문제이다.
이는 각 접두사마다 모음이 몇 개 있는지, 접미사마다 모음이 몇 개 있는지를 이용해 어렵지 않게 계산할 수 있다.
길이가 \(k>1\)인 접두사에 포함된 모음의 개수는 길이가 \(k-1\)인 접두사에 포함된 모음의 개수와 \(k\)번째 문자의 모음 여부로 구할 수 있다는 점을 활용하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int N, val1, val2, ans;
string s;
int isvowel[128];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
isvowel['a'] = isvowel['e'] = isvowel['i'] = isvowel['o'] = isvowel['u'] = 1;
isvowel['A'] = isvowel['E'] = isvowel['I'] = isvowel['O'] = isvowel['U'] = 1;
cin >> N >> s;
for (int L = 0, R = N - 1; L < N; L++, R--) {
val1 += isvowel[s[L]], val2 += isvowel[s[R]];
if (val1 && val1 == val2) ans++;
}
cout << ans;
}
'BOJ' 카테고리의 다른 글
[BOJ 33689 // C++] CPDU (0) | 2025.04.01 |
---|---|
[BOJ 33690 // C++] 포린드롬 (0) | 2025.03.31 |
[BOJ 21275 // C++] 폰 호석만 (0) | 2025.03.28 |
[BOJ 33574 // C++] 끊임없는 정렬과 창조함으로 (0) | 2025.03.27 |
[BOJ 29703 // C++] 펭귄의 하루 (0) | 2025.03.26 |