2025. 3. 16. 15:59ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/6778

접근 방법 - 값 비교 연산을 활용한 기초 문제
백준의 6778번 문제는 값 비교 연산을 통하여 손쉽게 해결할 수 있는 문제이다.
해당 문제는, 목격된 생김새(안테나 수, 눈의 수)를 입력으로 받을 때 추측 가능한 외계인의 종류를 구하여 출력하면 되는 문제이다.
이때 문제에서 정의된 외계인의 종류는 아래처럼 3가지가 있다.
- TroyMartian :: 최소 3개의 안테나, 최대 4개의 눈
- VladSaturnian :: 최대 6개의 안테나, 최소 2개의 눈
- GraemeMercurian :: 최대 2개의 안테나, 최대 3개의 눈
해당 문제는 영어로 작성되어 있어, 필자는 아래의 해석본을 참고하며 문제를 해결하였다.
아래 링크에 있는 해석본을 참고하면서 문제를 이해하고 해결을 시도해 보면 되겠다.
https://www.acmicpc.net/board/view/86061
각각의 외계인 생김새가 딱 하나로 정해진 것이 아니기 때문에, 크거나 작은지에 대한 연산을 적절히 수행하여 정답을 출력하면 된다.
그렇기 때문에 문제에 제시된 예제 2번의 출력처럼 답이 여러 개로 나올 수도 있다는 점도 참고해야 한다.
설명할 게 딱히 없을 것 같기는 하지만 자세한 설명을 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 안테나의 수와 눈의 수(a, e)를 순서대로 입력받는다.
2) 아래처럼 비교 연산을 수행하여, 각각에 대한 정답을 출력한다.
- a가 3 이상이고 e가 4 이하라면 이는 TroyMartian에 대한 생김새이기 때문에, 이 경우엔 "TroyMartian"을 출력한다.
- a가 6 이하이고 e가 2 이상이라면 이는 VladSaturnian에 대한 생김새이기 때문에, 이 경우엔 "VladSaturnian"을 출력한다.
- a가 2 이하이고 e가 3 이하라면 이는 GraemeMercurian에 대한 생김새이기 때문에, 이 경우엔 "GraemeMercurian"을 출력한다.
3) 위처럼 정답을 모두 출력하였다면, 실행을 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 6778번 코드
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;
}
}
제출 결과

(2023.05.21 백준 6778번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 1302번 베스트셀러 (C++/cpp) (0) | 2025.03.29 |
---|---|
[백준 BOJ] 18409번 母音を数える (Counting Vowels) (C++/cpp) (0) | 2025.03.21 |
[백준 BOJ] 5928번 Contest Timing (C++/cpp) (0) | 2025.03.16 |
[백준 BOJ] 7785번 회사에 있는 사람 (C++/cpp) (0) | 2025.03.07 |
[백준 BOJ] 6159번 Costume Party (C++/cpp) (0) | 2025.03.06 |