Algorithm(CodeTree, Python)/Simulation

[코드트리] 떨어지는 1자 블록 Python

kurooru 2023. 1. 22. 12:09
# n, m, k 입력
n, m, k = map(int, input().split())
k -= 1
# grid 입력
grid = [
    list(map(int, input().split()))
    for _ in range(n)
]

# 함수들
# get_dist(c)
def get_dist(c):

    for r in range(n):
        # 블록이 있으면
        if grid[r][c] == 1:
            # 반환
            return r
    
    # 바닥에 닿는 경우
    return n

# get_drop_dist(s, e)
def get_drop_dist(s, e):
    
    # dist_list
    dist_list = []

    # 떨어질 블록 기준
    for i in range(s, e):
        dist_list.append(get_dist(i))
    
    # 반환
    return min(dist_list) - 1

# 설계
# drop_dist -> 내려갈 수 있는 최대 거리
drop_dist = get_drop_dist(k, k+m)

# 내려갈 거리에 넣어주기
for c in range(k, k+m):
    grid[drop_dist][c] = 1

# 출력
for i in range(n):
    for j in range(n):
        print(grid[i][j], end=' ')
    print()