[백준] 3003번 : 킹, 퀸, 룩, 비숍, 나이트, 폰 - [C++]
https://www.acmicpc.net/problem/3003
3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
www.acmicpc.net
- 문제

기본 조건문만 안다면 그리 어렵지 않은 문제다.
- 알고리즘 [접근 방법]
(필자가 Java하고 C++를 따로 포스팅하다보니 같은 문제에 대해 본문 내용은 거의 같다.. 그러니 만약 둘 다 보시는 분들이라면 양해를 바란다..)
체스.. 예전에 진짜 자주 두었었던 게임이다..
킹 1, 퀸 1, 룩 2, 비숍 2, 나이트 2, 폰 8로 총 16개의 말을 활용하여 상대 말들을 하나씩 따내면서 체크메이트를 만들거나 스테일메이트 등 기본적으로 왕이 움직일 수 없게 만들거나 잡힐 수 밖에 없는 상황을 만들어 이기면 된다.
아무튼.. 위 본문에도 나와있듯 각 체스말들의 개수는 고정되어있고, 입력으로는 현재 갖고 있는 말의 개수가 된다.
그래서 실제 필요한 체스말의 개수에 맞추어 그 차를 구하면 되는 것이다.
그러면 푸는 방법은 간단하다.
각 킹, 퀸, 룩, 비숍, 나이트, 폰 변수를 선언하여 초기값으로 원래 정상적인 말의 개수로 초기화 한다음, 입력받은 각 수들을 각 체스말에 맞추어 해당 변수에서 빼면 된다.
자세한 것은 코드를 보도록 하자.
- 1가지 방법을 사용하여 풀이한다.
이 번 문제는 어떤 효율적인 측면이랄게 딱히 없어서 iostream의 cin, cout만 써도 된다고 판단이 들었다.
물론 다른 문제에서 향상 된 입출력을 보여주긴 했으나 이렇게 간단한 문제에서까지 쓸 이유는 없거니와 성능차이도 우리가 보는 성적표에선 나오지도 않아 그냥 표준 입출력만을 사용하도록 하곘다.
- 풀이
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int king = 1; int queen = 1; int rook = 2; int bishop = 2; int knight = 2; int pawn = 8; // 입력받을 변수 int in_king, in_queen, in_rook, in_bishop, in_knight, in_pawn; cin >> in_king; cin >> in_queen; cin >> in_rook; cin >> in_bishop; cin >> in_knight; cin >> in_pawn; // 참고로 출력형식을 보면 각 변수들사이에 공백으로 구분 된한 줄로 출력해야한다. cout << king - in_king << " "; cout << queen - in_queen << " "; cout << rook - in_rook << " "; cout << bishop - in_bishop << " "; cout << knight - in_knight << " "; cout << pawn - in_pawn << " "; return 0; }
가장 기본적인 방법이라 할 수 있겠다.
주석으로도 써놓았지만, 한 줄로 출력해야 하고 그 변수들은 각 공백을 기준으로 구분되기 때문에 각 변수 뒤에 공백을 넣어 출력해주어야 한다.
- 성능

채점 번호 : 48823463
- 정리
간단한 입출력 문제라 크게 어렵지는 않았을 것이다.
혹여 어렵거나 이해가 되지 않는 부분이 있다면 언제든 댓글을 남겨주시면 감사하겠다.
'C++ - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글
[백준] 25083번 : 새싹 - [C++] (0) | 2022.07.06 |
---|---|
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! - [C++] (0) | 2022.07.01 |
[백준] 10926번 : ??! - [C++] (0) | 2022.06.30 |
[백준] 2588번 : 곱셈 - [C++] (6) | 2021.02.26 |
[백준] 10430번 : 나머지 - [C++] (5) | 2021.02.25 |
댓글을 사용할 수 없습니다.