PS

BOJ 10589 : 마법의 체스판

lickelon 2024. 4. 3. 23:23
  • 문제 링크 : boj.kr/10589
  • 난이도 : G4
  • 태그 : 애드혹, 해 구성하기
 

10589번: 마법의 체스판

진수는 동생 지수로부터 크기가  n × m인 마법의 체스판을 받았다. 마법의 체스판은 신기한 기능이 많이 있는데 그중에는 체스판의 색상을 반전시킬 수 있는 기능이 있다. 이 기능을 사용하면

www.acmicpc.net


코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

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

    int n, m;
    cin >> n >> m;

    cout << n/2 + m/2 << "\n";
    for(int i = 2; i <= n; i += 2) {
        cout << i << " 1 " << i << " " << m << "\n";
    }
    for(int i = 2; i <= m; i += 2) {
        cout << "1 " << i << " " << n << " " << i << "\n";
    }

    return 0;
}

풀이

3*3의 체스판으로 단순화해서 생각해보자. 이는 #모양에서 모든 선분을 홀수번 칠하는 것과 같다.

이때 가장 최적은 모든 선분을 딱 한 번씩 칠하는 것이다.

어떻게 칠하더라도 길게 이어진 선분을 나눠서 칠하는 것은 비효율적임을 알 수 있다. 따라서 길게 이어진 선분은 한 번에 칠해야 하고, 평행한 두 선분을 동시에 칠하게 된다.

평행한 긴 선분 두개씩 동시에 칠하는 모든 방법은 유효한 방법이므로 아무렇게나 칠하면 된다.

'PS' 카테고리의 다른 글

BOJ 28449 : 누가 이길까  (0) 2024.04.05
BOJ 29810 : 배신자  (0) 2024.04.04
BOJ 1461 : 도서관  (0) 2024.04.02
BOJ 12764 : 싸지방에 간 준하  (0) 2024.04.01
BOJ 12934 : 턴 게임  (0) 2024.03.31