본문 바로가기

알고리즘 문제

[C/C++ 백준 5556번] 타일 (Silver 1)

 

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

 

5556번: 타일

문제 상근이는 타일로 작품을 만드는 예술가이다. 크기가 N × N인 작품을 만들기 위해서 상근이는 1 × 1 타일을 사용한다. 색상은 빨강, 파랑, 노랑 중 하나이다. 작품은 가장 바깥쪽에 빨간색을 �

www.acmicpc.net

타일을 종이접기하듯이 4번접어보자(대각선, 중앙선). 그러면 8개의 직각이등변삼각형으로 분할 할 수 있는데, 대칭이기 때문에 같은색의 칸끼리 겹치게 된다.

 

모든 주어진 좌표를 왼쪽 위의 삼각형으로 옮기면 간단하게 문제를 풀 수 있다.

코드는 다음과 같다.

 

#include <cstdio>
int main(void){
	int N,K,x,y,temp;
	scanf("%d %d",&N,&K);
	for(int i=0; i<K; i++){
		scanf("%d %d",&x,&y);
		if(x>(N+1)/2)
			x = N+1-x;
		if(y>(N+1)/2)
			y = N+1-y;
		if(x<y){
			temp = x;
			x = y;
			y = temp;
		}
		if(y%3==1)
			printf("1\n");
		if(y%3==2)
			printf("2\n");
		if(y%3==0)
			printf("3\n");
	}
		
}