Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- sequelize
- Spring #Spring Boot #Java
- java
- Spring #Java #Spring Boot
- 2447
- kakaocloud
- python
- SpringTokenizer
- 알고리즘
- node
- Java #백준 #코딩테스트
- 11054
- 백준
- 파이썬
- 24479
- 카카오클라우드스쿨
- Java #오븐시계 #백준
- 15552
- kakaocloudschool
- 카카오 클라우드 스쿨
- 1110
- Spring
- boj
- Spring #Java #Spring Boot #@BeforeEach #@AfterEach
- 9020
- Java #코딩테스트
- Spring #Java #Spring Boot #싱글톤
- 코딩테스트
- 7568
- 11053
Archives
- Today
- Total
YoungSoo
백준 - 색종이 만들기(2630번 Python 풀이) 본문

이 색종이 만들기 문제는 백준에서는 분할 정복 알고리즘으로 분류되어 있다.
여기서 분할 정복 알고리즘은 기본적으로 엄청나게 크고 방대한 문제를 조금씩 나눠가면서 푸는 문제인데
재귀 함수랑 비슷하다고 생각이 들어 재귀함수처럼 함수 내에서 자기 자신의 함수를 호출하여 푸는 방식으로 알고리즘을 생각해보았다.
풀이
import sys
input = sys.stdin.readline
n = int(input())
bd = [list(map(int, input().split())) for _ in range(n)]
result = []
def d(x, y, n):
color = bd[x][y]
for i in range(x, x+n):
for j in range(y, y+n):
if color != bd[i][j]:
d(x, y, n//2)
d(x, y+n//2, n//2)
d(x+n//2, y, n//2)
d(x+n//2, y+n//2, n//2)
return
if color == 0:
result.append(0)
else:
result.append(1)
d(0,0,n)
print(result.count(0))
print(result.count(1))
d라는 함수를 선언해주고 반복문을 통해 서로 다른 숫자가 없는지 계속 검사해주고 그 수를 리스트에 추가해 count함수를 이용해 값을 출력해냈다.
'코딩테스트' 카테고리의 다른 글
| 백준 - 가장 긴 증가하는 부분 수열2(12015 Python 풀이) (0) | 2023.02.09 |
|---|---|
| 백준 - 행렬 제곱(10830 Python 풀이) (0) | 2023.02.03 |
| 백준 - 구간 합 구하기5(11660 파이썬 풀이) (2) | 2023.01.12 |
| 백준 - 가장 긴 증가하는 부분 수열, 가장 긴 바이오닉 부분 수열(11053, 11054 파이썬 풀이) (0) | 2023.01.05 |
| 백준 - 스타트와 링크(14889번 파이썬 풀이) (2) | 2022.12.27 |