[백준 8436] Kamil (C#, C++) - soo:bak
작성일 :
문제 링크
설명
카밀이 발음한 단어가 주어질 때, 그 발음이 실제로 몇 가지 다른 단어를 뜻할 수 있는지 구하는 문제입니다.
접근법
각 글자는 서로 독립적으로 가능한 원래 글자의 수가 정해집니다.
카밀은 K를 T로 말할 수 있으므로, 들은 글자가 T면 원래는 T 또는 K일 수 있어 경우의 수가 2입니다. 같은 방식으로 D는 D 또는 G, L은 L 또는 R, F는 F 또는 R일 수 있습니다.
그 외의 글자는 원래 그대로였을 수밖에 없으므로 경우의 수가 1입니다. 따라서 단어를 앞에서부터 보면서 각 글자의 경우의 수를 모두 곱하면 답이 됩니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
class Program {
static void Main() {
string word = Console.ReadLine()!;
long answer = 1;
foreach (char ch in word) {
if (ch == 'T' || ch == 'D' || ch == 'L' || ch == 'F')
answer *= 2;
}
Console.WriteLine(answer);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string word;
cin >> word;
long long answer = 1;
for (char ch : word) {
if (ch == 'T' || ch == 'D' || ch == 'L' || ch == 'F') {
answer *= 2;
}
}
cout << answer << "\n";
return 0;
}