작성일 :

문제 링크

6856번 - Roll the Dice

설명

주어진 두 주사위를 굴려서 합이 10 이 되는 경우의 수를 찾는 문제입니다.

이 때, 하나의 주사위는 m 개의 면을 가지고 있고, 다른 하나의 주사위는 n 개의 면을 가지고 있습니다.

따라서, 각 주사위를 독립적으로 고려하여 가능한 모든 값에 대하여 그 값이 10 과 얼마나 차이가 나는지 확인하면 됩니다.

예를 들어, 첫 번째 주사위가 2 를 나타내면 두번 째 주사위는 8 을 나타내야 합이 10 이 됩니다.

그런 다음, 두 번째 주사위가 필요한 값을 나타낼 수 있는 면의 수를 가지고 있는지 확인하면 됩니다.

위 과정을 두 주사위의 모든 가능한 값에 대하여 반복하면, 합이 10 이 되는 모든 방법을 찾을 수 있습니다.


Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var m = int.Parse(Console.ReadLine()!);
      var n = int.Parse(Console.ReadLine()!);

      int ways = 0;
      for (int i = 1; i <= m; i++) {
        if (10 - i >= 1 && 10 - i <= n)
          ways++;
      }

      if (ways == 1)
        Console.WriteLine("There is 1 way to get the sum 10.");
      else
        Console.WriteLine($"There are {ways} ways to get the sum 10.");

    }
  }
}



[ C++ ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int m, n; cin >> m >> n;

  int ways = 0;
  for (int i = 1; i <= m; i++) {
    if (10 - i >= 1 && 10 - i <= n)
      ways++;
  }

  if (ways == 1) cout << "There is 1 way to get the sum 10." << "\n";
  else cout << "There are " << ways << " ways to get the sum 10." << "\n";

  return 0;
}