동까의 코딩

99클럽 코테 스터디 TIL 10일차 본문

문제 풀이/99클럽

99클럽 코테 스터디 TIL 10일차

동까의 코딩 2025. 2. 5. 10:17
반응형

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

 

 

달팽이판 구현을 위한 구글링을 하고 관련 기법에 대해 배우게 되었습니다.

 

r1, c1, r2, c2 = map(int, input().split())
arr = [[0] * (c2 - c1 + 1) for _ in range(r2 - r1 + 1)]
max_num = 0


def cal(r, c):
    bor = max(abs(r), abs(c))
    default = (bor * 2 - 1) ** 2 + 1

    if r == bor:
        return default + bor * 7 + c - 1
    if c == -bor:
        return default + bor * 5 + r - 1
    if r == -bor:
        return default + bor * 3 - c - 1

    return default + bor - r - 1


for i in range(r1, r2 + 1):
    for j in range(c1, c2 + 1):
        arr[i - r1][j - c1] = cal(i, j)
        max_num = max(max_num, arr[i - r1][j - c1])

for i in range(r2 - r1 + 1):
    for j in range(c2 - c1 + 1):
        print(str(arr[i][j]).rjust(len(str(max_num))), end=" ")
    print()
반응형