본문 바로가기

백준/실버

[백준 1402번] 아무도이문제는A번난이도인것같다 (C++)

문제링크 : https://www.acmicpc.net/problem/1402

 

1402번: 아무래도이문제는A번난이도인것같다

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다.

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;

int T, A, B;

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);

    cin >> T;
    while(T--)
    {
        cin >> A >> B;
        cout << "yes" << "\n"; //모든 경우 가능
    }

    return 0;
}

 

처음에는 굉장히 복잡하고 노가다로 풀어야하나 고민하다가 아무리 생각해도 그건 아닌 것같아서 찾아보니 상당히 신기했던 문제이다.

A에 곱해주는걸 1또는 -1이 가능하다는 것을 이용하여 결국 모든 수에 대해 A'로 변환이 가능하다.

따라서 입력받은 수에 상관없이 무조건 yes이다.

A = A*1
A' = A+1 
-> 1의 갯수를 조절하여 A보다 큰 모든 수에 대해 변환 가능
(A+1, A+1+1, A+1+1+1...)

A = A*(-1)*(-1)*1
A' = A-1-1+1
   = A-1
-> (-1),(-1),1 3쌍의 조합의 갯수를 조절하여 A보다 작은 모든 수에 대해 변환 가능
(A-1, A-1-1, A-1-1-1...)