© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

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

BOJ 6778 - Which Alien?

2025-11-13
BOJ
브론즈 IV
cpp
원본 문제 보기
구현

문제

BOJ 6778 - Which Alien?

외계인의 팔(a) 개수와 눈(e) 개수를 입력받아, 어떤 종류의 외계인인지 판별하는 문제다. 각 외계인 종족마다 팔과 눈의 조건이 다르며, 한 외계인이 여러 종족의 조건을 동시에 만족할 수도 있다. 조건을 만족하는 모든 종족을 출력한다.

입력

두 정수 a(팔 개수)와 e(눈 개수)가 주어진다.

출력

조건을 만족하는 외계인 종족을 각각 한 줄씩 출력한다.

  • a >= 3이고 e <= 4이면: TroyMartian
  • a <= 6이고 e >= 2이면: VladSaturnian
  • a <= 2이고 e <= 3이면: GraemeMercurian

여러 조건을 만족하면 해당하는 종족을 모두 출력한다.

예제

입력출력
3 2TroyMartian VladSaturnian
1 1VladSaturnian GraemeMercurian
4 5VladSaturnian
2 3VladSaturnian GraemeMercurian

풀이

세 종족의 조건을 독립적인 if 문으로 각각 확인한다. 하나의 if-else if 체인이 아니라 세 개의 독립적인 if문을 사용하는 것이 핵심이다.

  1. a(팔 개수)와 e(눈 개수)를 입력받는다.
  2. TroyMartian 조건(a >= 3 && e <= 4)을 확인해 참이면 출력한다.
  3. VladSaturnian 조건(a <= 6 && e >= 2)을 확인해 참이면 출력한다.
  4. GraemeMercurian 조건(a <= 2 && e <= 3)을 확인해 참이면 출력한다.

핵심 아이디어: 세 조건이 상호 배타적이지 않으므로 if-else if가 아닌 독립적인 if 문 세 개로 작성해야 여러 종족을 동시에 출력할 수 있다.

코드

#include <iostream>
 
using namespace std;
 
int main()
{
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
 
  int a, e;
  cin >> a >> e;
 
  if (a >= 3 && e <= 4)
  {
    cout << "TroyMartian" << endl;
  }
  if (a <= 6 && e >= 2)
  {
    cout << "VladSaturnian" << endl;
  }
  if (a <= 2 && e <= 3)
  {
    cout << "GraemeMercurian" << endl;
  }
}

복잡도

  • 시간: O(1) — 입력이 단 2개의 정수로 고정
  • 공간: O(1) — 변수 2개만 사용