본문 바로가기
Algorithm/백준

[Algorithm][C언어] 백준 9437번: 사라진 페이지 찾기

by 8희 2022. 10. 28.

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

 

9437번: 사라진 페이지 찾기

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

www.acmicpc.net

 

문제

꿍은 수능에 응시하고 있었는데 어느덧 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만 주어진다.

 

출력

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

 

코드

https://starb0ard.tistory.com/633

#include<stdio.h>

int main(void)
{
	int N, P;

	scanf("%d", &N);
	while(N!=0)
	{
		scanf("%d", &P);
		if(2 * P <= N)
			if(P % 2 == 1)
				printf("%d %d %d\n", P + 1, N - P, N + 1 - P);
			else
				printf("%d %d %d\n", P - 1, N + 1 - P, N + 2 - P);
		else
			if(P % 2 == 0)
				printf("%d %d %d\n", N + 1 - P, N + 2 - P, P - 1);
			else
				printf("%d %d %d\n", N - P, N + 1 - P, P + 1);
		scanf("%d", &N);
	}
    
	return 0;
}

 

처음 문제를 보고 쉬울 거라고 생각했는데 생각보다 어려워서...

결국 구글링 했다... ^.ㅠ 다음에 다시 또 풀어봐야겠다