본문 바로가기

PS/백준

[BOJ] 백준 2630 색종이 만들기 (Swift)

반응형

문제

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

 

2630번: 색종이 만들기

첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.

www.acmicpc.net

풀이

그림으로 설명이 잘 되어있는 문제입니다.

처음에는 n * n 종이를 검사해서, 전체 종이가 같은색으로 칠해져 있는지 확인해주고,
0으로 같은색이라면 흰색, 1로 같은색이라면 파랑색 종이를 세어 줍시다.

전부 같은색인지 확인을 해주기 위해서는 0의 개수와 1의 개수를 세어서 그 갯수가 n * n 의 갯수라면 전부 같은 색입니다.

같은 색이 아니라면, 한 변을 n / 2 로 갖는 종이로 나누어 줍시다.
그렇다면 총 4개의 종이가 생길 것입니다.

4개의 종이에 대해서 위의 동작을 반복해줍시다.

소스코드

후기

 재귀적으로 자신을 호출하면서 그 연산의 단위를 조금씩 줄어가는 방식인 분할 정복 기법을 사용하여 풀이할 수 있는 문제입니다.

반응형