Computer Science/Algorithm Problem

백준] 9437 - 사라진 페이지 찾기(ACM-ICPC Regional)

TwinParadox 2017. 12. 27. 23:00
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

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




출력

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




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	int n, p, tmp;
	while (1)
	{
		cin >> n;
		if (n == 0)
			break;
		cin >> p;
		if (p % 2 == 0)
		{
			if (n / 2 >= p)
				cout << p - 1 << ' ' << n - p + 1 << ' ' << n - p + 2 << '\n';
			else
				cout << n - p + 1 << ' ' << n - p + 2 << ' ' << p - 1 << '\n';
		}
		else
		{
			if (n / 2 >= p)
				cout << p + 1 << ' ' << n - p << ' ' << n - p + 1 << '\n';
			else
				cout << n - p << ' ' << n - p + 1 << ' ' << p + 1 << '\n';
		}
	}
}




Tip

수학적으로 계산하면 쉽게 풀 수 있다. 필자가 푸는 방식은 짝수 홀수, 뒷페이지 앞페이지 구분 후 계산해 출력하는 방식이다.


728x90
728x90