일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- 11047번
- 영어
- 18406번
- EBS어학당
- 1793번
- 알고리즘
- WebSecurityConfigurerAdapter
- 신규아이디추천
- caniuse
- codility
- 분할정복
- 1992번
- Java
- 파이썬
- Spring Security
- 11727번
- BinaryGap
- SecurityFilterChain
- programmers
- 백준
- 입이 트이는 영어
- 2163번
- 1759번
- 9251번
- 1057번
- 2630번
- github
- python
- 권주현의 진짜 영국 영어
Archives
- Today
- Total
철갑이의 이모저모
[백준] 2630번(색종이 만들기) with Python 본문
728x90
문제
2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
풀이
분할 정복 : 재귀적으로 자신을 호출하면서 그 연산의 단위를 조금씩 줄어가는 방식
첫 색상이 나머지 색상과 같은지 확인 후 틀린 것이 있으면, 틀린 구역을 다시 네 구역으로 나누어 다시 색상이 같은 것을 확인해주기 위해 재귀를 이용해서 풀었다.
재귀 호출시 들어가야하는 인수의 값이 헷갈려서 그림으로 시작점을 표시해보았다.

비슷한 문제
[백준] 1992번(쿼드트리) with Python
문제 www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의
happylsm76.tistory.com
답
import sys
N = int(sys.stdin.readline())
paper = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
result = []
def solution(x, y, N) :
color = paper[x][y]
for i in range(x, x+N) :
for j in range(y, y+N) :
if color != paper[i][j] :
solution(x, y, N//2)
solution(x, y+N//2, N//2)
solution(x+N//2, y, N//2)
solution(x+N//2, y+N//2, N//2)
return
if color == 0 :
result.append(0)
else :
result.append(1)
solution(0,0,N)
print(result.count(0))
print(result.count(1))

728x90
'알고리즘' 카테고리의 다른 글
[백준] 9251번(LCS) with Python (0) | 2020.10.17 |
---|---|
[백준] 1992번(쿼드트리) with Python (0) | 2020.10.17 |
[백준] 1759번(암호 만들기) with Python (0) | 2020.10.13 |
[백준] 1793번(타일링) with Python (0) | 2020.10.08 |
[백준] 11727번(2xn 타일링 2) with Python (0) | 2020.10.07 |