728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 한 변의 길이 N이 주어진다. (1 ≤ N ≤ 109) 둘째 줄에는 창영이가 제거한 타일의 개수 K가 주어진다. (1 ≤ K ≤ 1000) 다음 줄부터 K개 줄에는 창영이가 제거한 타일의 위치 ai bi가 제거한 순서대로 주어진다. (1 ≤ ai ≤ N, 1 ≤ bi ≤ N) 타일은 왼쪽에서 ai번째, 위에서 bi번째에 있다. 같은 타일을 두 번 이상 제거하는 경우는 없다.
출력
창영이가 제거한 순서대로 타일의 색상을 출력한다. 빨간색은 1, 파란색은 2, 노란색은 3을 출력한다.
소스코드
#include <iostream> using namespace std; int main(void) { int N, K, half; cin >> N >> K; half = N / 2; while (K--) { int a, b, color; cin >> a >> b; if (b <= half) { int start = b, end = N + 1 - b; if (a >= start && a <= end) { color = b % 3; } else { if (a <= half) { color = a % 3; } else { color = (N + 1 - a) % 3; } } } else { int start = N + 1 - b, end = b; if (a >= start && a <= end) { color = (N + 1 - b) % 3; } else { if (a <= half) { color = a % 3; } else { color = (N + 1 - a) % 3; } } } if (color == 0) { cout << 3; } else { cout << color; } cout << '\n'; } }
Tip
규칙적인 패턴만 파악하면 쉽게 구현할 수 있는 문제다. 타일의 사이즈가 N일 때, 위쪽 절반과, 아래쪽 절반에 대한 규칙을 찾는 방식으로 접근했다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 10026 - 적록색약(USACO March 2014 Bronze) (0) | 2019.03.31 |
---|---|
백준] 2583 - 영역 구하기(한국정보올림피아드 2006; KOI 2006) (0) | 2019.03.25 |
백준] 2225 - 합분해 (0) | 2019.03.18 |
백준] 10451 - 순열 사이클(ACM-ICPC Regionals Daejeon) (0) | 2019.03.17 |
백준] 1406 - 에디터(CHCI 2004) (0) | 2019.03.13 |