트로미노 알고리즘 문제
https://www.acmicpc.net/problem/14601
내 코드😉
import sys
input = sys.stdin.readline
k = int(input())
x, y = map(int, input().split())
num = 0
length = pow(2, k)
map = [[0] * length for _ in range(length)]
map[x - 1][y - 1] = -1
def checkHole(x, y, len):
for i in range(x, x + len):
for j in range(y, y + len):
if map[i][j] != 0:
return False
return True
def tromino(x, y, len):
num += 1
halfLen = len // 2
if (checkHole(x, y, halfLen)):
map[x + halfLen - 1][y + halfLen - 1] = num
if (checkHole(x, y + halfLen, halfLen)):
map[x + halfLen - 1][y + halfLen] = num
if (checkHole(x + halfLen, y, halfLen)):
map[x + halfLen][y + halfLen - 1] = num
if (checkHole(x + halfLen, y + halfLen, halfLen)):
map[x + halfLen][y + halfLen] = num
if halfLen == 2:
return
tromino(x, y, halfLen)
tromino(x, y + halfLen, halfLen)
tromino(x + halfLen, y, halfLen)
tromino(x + halfLen, y + halfLen, halfLen)
tromino(0, 0, length)
for i in range(length):
for j in range(length):
print(map[i][j], end=' ')
print()
백준 문제 풀이 깃허브 주소입니다 :)
'알고리즘' 카테고리의 다른 글
[백준] 19622번: 회의실 배정3 | 파이썬 (0) | 2022.04.12 |
---|---|
[백준] 19621번: 회의실 배정2 | 파이썬 (0) | 2022.04.12 |
[백준] 1946번 신입 사원 | 파이썬 (0) | 2022.03.26 |
[백준] 1931번: 회의실 배정 | 파이썬 (0) | 2022.03.23 |
[프로그래머스] Level1 체육복 | 탐욕법 | 파이썬 (0) | 2022.03.18 |