※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24377번 문제인 ИГРА이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/24377
24377번: ИГРА
Габи и Боби често обичат да играят в някои от по-скучните им часове в училище. Предпочитаната от тях игра е четири кутийки. В нея са дадени че
www.acmicpc.net
문제의 상황을 우리말로 서술하면 다음과 같다.
BOJ 24377: 네 상자 게임
문제)
Gabby와 Bobby는 지루한 학교 수업시간동안에 노는 것을 좋아한다. 이들은 특히 네 상자 게임을 자주 하는데, 이 게임은 네 개의 상자에 1부터 4까지의 자연수를 채워넣는 놀이이다. 처음에는 1번, 2번, 3번, 4번으로 이루어진 총 네 개의 빈 상자로 게임을 시작한다. 두 사람은 차례를 번갈아가며 빈 상자 하나를 고르고, 그 상자를 지금까지 사용되지 않은 수로 채워넣는다.
네 상자 게임의 몇 차례가 지난 뒤, Gabby와 Bobby는 이 게임을 자신들 대신 진행해 줄 수 있는 프로그램을 만들 수 있다는 것을 생각해냈다. Gabby와 Bobby를 위해 네 상자 게임의 남은 차례를 출력하는 프로그램을 작성해보자.
입력)
입력은 한 줄로 이루어져 있다.
첫째줄에 0 이상 4 이하의 값을 갖는 네 개의 정수가 공백을 사이에 두고 주어진다.
이 네 개의 숫자는 진행중인 네 상자 게임의 각각 1번, 2번, 3번, 4번 상자에 채워진 숫자를 나타낸다. 단, 0의 경우 해당 상자에 아직 수가 채워지지 않았음을 나타낸다.
0이 아닌 다른 수는 중복되어 주어지지 않으며, 적어도 둘 이상의 상자는 비어있지 않다.
출력)
두 개의 정수를 공백으로 구분하여 한 줄에 출력한다.
입력으로 빈 상자가 정확히 하나 주어졌다면, 비어있는 상자의 번호와 그 상자에 채워넣어야 하는 수를 순서대로 출력한다.
입력으로 빈 상자가 정확히 둘 주어졌다면, 그 두 상자에 채워넣어야 하는 수를 작은 수부터 순서대로 출력한다.
입력으로 빈 상자가 주어지지 않았다면, 1번 상자와 2번 상자에 채워진 수를 순서대로 출력한다.
문제에서 요구하는 대로 구현해주자.
빈 상자의 개수와 사용된 숫자가 무엇인지를 잘 관리하는 것으로 문제를 간단히 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int arr[5];
int visited[5];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int cnt = 0;
for (int i = 1; i < 5; i++) {
int x; cin >> x;
arr[i] = x;
if (x == 0) cnt++;
else visited[x]++;
}
if (cnt == 0) {
cout << arr[1] << ' ' << arr[2];
return 0;
}
if (cnt == 1) {
for (int i = 1; i < 5; i++) {
if (arr[i] == 0) cout << i << ' ';
}
}
for (int i = 1; i < 5; i++) {
if (visited[i] == 0) cout << i << ' ';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1448 // C++] 삼각형 만들기 (0) | 2022.02.12 |
---|---|
[BOJ 24379 // C++] КИФЛИЧКИ (0) | 2022.02.11 |
[BOJ 24378 // C++] КАСТИНГ (0) | 2022.02.11 |
[BOJ 6443 // C++] 애너그램 (0) | 2022.02.10 |
[BOJ 1947 // C++] 선물 전달 (0) | 2022.02.09 |