본문 바로가기
Develop/백준 (Cpp)

[백준] 9437번 : 사라진 페이지 찾기 (C++)

by Tarra 2023. 2. 6.

9437번 : 사라진 페이지 찾기


문제 )

꿍은 수능에 응시하고 있었는데 어느덧 4교시 탐구영역 시간이 되었다. 그런데 탐구영역은 다른 영역과 다르게 자기가 응시할 과목만 고르고 응시하지 않는 과목은 바닥에 버리도록 되어있다. 꿍이 응시하지 않는 과목을 골라 뽑아내던 중 문득 궁금한게 생겼다. 만약 탐구영역 시험지가 아래와 같이 전체 12쪽으로 되어 있었다고 하자. 

 

 

그렇다면 1쪽과 12쪽은 한 면에, 2쪽과 11쪽이 한면에, ... 6쪽과 7쪽이 한면에 인쇄되어 있고 1,2,11,12쪽이 한 장, 3,4,9,10쪽이 한 장, 5,6,7,8이 한 장 이다. 그래서 만약 꿍이 2쪽이 인쇄된 종이 한 장을 바닥에 버렸을 때, 그 종이에 인쇄된 나머지 쪽, 즉 사라진 페이지들은 1,11,12쪽이다.

꿍이 탐구영역을 응시할 동안 여러분들은 한 쪽의 페이지만으로 사라진 나머지의 페이지들을 찾아주어라.

 

 

입력 :

각 테스트 케이스에 대해 두가지 정수 N,P가 주어진다. 4의 배수인 N(4 ≤ N ≤ 1000)은 탐구영역의 전체 페이지 수이며, P(1 ≤ P ≤ N)는 선택된 한 페이지다. 입력의 마지막은 하나의 0만 주어진다.

 

 

 

출력 :

각 테스트 케이스에 대해 사라진 페이지들을 오름차순으로 출력한다.

 

 

 

 

 

풀이)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
 
    while (1) {
        int n, p;
        cin >> n;
        if (n == 0break;
        cin >> p;
 
        vector<int> pages;
 
        // 홀짝에 따라 해당 페이지들을 넣어준다.
        pages.push_back(p % 2 ? p + 1 : p - 1);
        pages.push_back(p % 2 ? n - p : n - p + 1);
        pages.push_back(p % 2 ? n - p + 1 : n - p + 2);
 
        sort(pages.begin(), pages.end());
 
        for (auto& ele : pages) {
            cout << ele << " ";
        }
        cout << "\n";
 
    }
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/9437 

 

9437번: 사라진 페이지 찾기

각 테스트 케이스에 대해 두가지 정수 N,P가 주어진다. 4의 배수인 N(4 ≤ N ≤ 1000)은 탐구영역의 전체 페이지 수이며, P(1 ≤ P ≤ N)는 선택된 한 페이지다. 입력의 마지막은 하나의 0만 주어진다.

www.acmicpc.net