작성일 :

문제 링크

8436번 - Kamil

설명

카밀이 발음한 단어가 주어질 때, 그 발음이 실제로 몇 가지 다른 단어를 뜻할 수 있는지 구하는 문제입니다.


접근법

각 글자는 서로 독립적으로 가능한 원래 글자의 수가 정해집니다.

카밀은 KT로 말할 수 있으므로, 들은 글자가 T면 원래는 T 또는 K일 수 있어 경우의 수가 2입니다. 같은 방식으로 DD 또는 G, LL 또는 R, FF 또는 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;
}

Tags: 8436, BOJ, C#, C++, 문자열, 백준, 수학, 알고리즘

Categories: ,