9437번 : 사라진 페이지 찾기
문제 )
꿍은 수능에 응시하고 있었는데 어느덧 4교시 탐구영역 시간이 되었다. 그런데 탐구영역은 다른 영역과 다르게 자기가 응시할 과목만 고르고 응시하지 않는 과목은 바닥에 버리도록 되어있다. 꿍이 응시하지 않는 과목을 골라 뽑아내던 중 문득 궁금한게 생겼다. 만약 탐구영역 시험지가 아래와 같이 전체 12쪽으로 되어 있었다고 하자.
![](https://blog.kakaocdn.net/dn/bqPTFk/btrYf0IKTTi/kisqZOq3JRAgxwhiP9xVHk/img.png)
그렇다면 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 == 0) break;
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
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 10810번 : 공 넣기 (C++) (0) | 2023.02.06 |
---|---|
[백준] 11104번 : Fridge of Your Dreams (C++) (0) | 2023.02.06 |
[백준] 5613번 : 계산기 프로그 (C++) (0) | 2023.02.06 |
[백준] 9501번 : 꿍의 우주여행 (C++) (0) | 2023.02.06 |
[백준] 1547번 : 공 (C++) (0) | 2023.02.06 |