[백준 2954] 창영이의 일기장 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
문제에 주어지는 암호화 방식에 따라 주어진 문자열을 해독하여 원래 문장을 복호화하여 출력하는 문제입니다.
- 암호화 방식은 다음과 같습니다:
- 모음 (a, e, i, o, u) →
모음 + 'p' + 같은 모음
으로 변환. - 자음은 그대로 사용.
- 모음 (a, e, i, o, u) →
예시:
- 암호:
apa
→ 원문:a
- 암호:
bapa
→ 원문:ba
접근법
- 문자열을 한 줄 입력받습니다.
- 문자열을 왼쪽부터 한 글자씩 순회합니다.
현재 문자가 모음
이고,다음 문자가 'p'
,그 다음이 현재 문자와 같다면
→ 한 글자로 복원하고3칸
건너뜁니다.- 그렇지 않다면 그대로 출력하고 한 글자만 이동합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
class Program {
static void Main() {
string s = Console.ReadLine();
for (int i = 0; i < s.Length;) {
if ("aeiou".Contains(s[i]) && i + 2 < s.Length && s[i + 1] == 'p' && s[i + 2] == s[i]) {
Console.Write(s[i]);
i += 3;
} else {
Console.Write(s[i]);
i++;
}
}
Console.WriteLine();
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
getline(cin, s);
for (size_t i = 0; i < s.size();)
if (string("aeiou").find(s[i]) != string::npos && i + 2 < s.size() && s[i + 1] == 'p' && s[i + 2] == s[i])
cout << s[i], i += 3;
else cout << s[i], i++;
cout << "\n";
return 0;
}