© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 11800 - Tawla

2024-11-23
BOJ
브론즈 III
cpp
원본 문제 보기
구현
많은 조건 분기

문제

BOJ 11800 - Tawla

두 주사위의 눈이 주어질 때, 아랍어 주사위 규칙에 따라 해당하는 이름을 출력하라.

입력

테스트 케이스 수 N, 각 케이스마다 두 주사위 눈이 주어진다.

출력

각 케이스마다 "Case #:" 형식과 함께 아랍어 이름을 출력한다. 같은 눈이면 특수 이름, 5와 6이면 "Sheesh Beesh", 그 외에는 큰 눈 이름 + 작은 눈 이름 순으로 출력한다.

예제

입력출력
2 3 5 6 6Case 1: Bang Seh Case 2: Dosh

풀이

주사위 눈에 대응하는 이름 배열을 미리 정의하고, 조건에 따라 분기한다.

  1. 1~6에 대응하는 일반 이름과 같은 눈일 때의 특수 이름 배열을 정의한다
  2. 두 눈이 같으면 특수 이름 배열에서 출력한다
  3. 작은 눈이 5이고 큰 눈이 6이면 "Sheesh Beesh"를 출력한다
  4. 그 외에는 큰 눈 이름 + 작은 눈 이름 순서로 출력한다

핵심 아이디어: 3가지 조건 분기(같은 눈, 5-6 조합, 일반)로 처리하는 매핑 문제이다.

코드

#include <bits/stdc++.h>
using namespace std;
 
int n, a, b;
string diceNumName[7] = {"", "Yakk", "Doh", "Seh", "Ghar", "Bang", "Sheesh"};
string sameDiceNumName[7] = {"", "Habb Yakk", "Dobara", "Dousa", "Dorgy", "Dabash", "Dosh"};
int main()
{
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    cin >> a >> b;
    cout << "Case " << i << ": ";
    int small = min(a, b);
    int big = max(a, b);
    if (small == big)
    {
      cout << sameDiceNumName[small] << '\n';
      continue;
    }
    if (small == 5 && big == 6)
    {
      cout << "Sheesh Beesh\n";
      continue;
    }
    cout << diceNumName[big] << ' ' << diceNumName[small] << '\n';
  }
}

복잡도

  • 시간: O(N) (N: 테스트 케이스 수)
  • 공간: O(1)