개발/백준

파이썬 체스판 대각선 경로 구현 팁

센솔 2022. 7. 19. 11:38

(3,3) 위치에 비숍을 놓았을 때 영향력 범위

 

체스판에서 대각선 경로를 구할 때 어떻게 구현을 해야 할까?

간단하게 보일 수도 있지만 막무가내로 구현하면 코드가 상당히 더러워질 수 있다.

 

백준 N-queen(9963), 비숍(1799) 문제에서 유용하게 활용할 수 있는 대각선 경로 판정 팁을 공유해본다.

# 보드판 사이즈
SIZE_X = 8
SIZE_Y = 8


def Diagonal(x, y, board):
    for i in range(SIZE_Y):
        for j in range(SIZE_X):
            if abs(i-y) == abs(j-x):
                board[i][j] = 1


board = [[0]*SIZE_X for _ in range(SIZE_Y)]
Diagonal(3, 3, board)  # x, y 위치에 비숍 놓기
print(board)

절댓값을 이용하면 편하게 구할 수 있다. 

x, y 위치에 비숍을 놓는다고 가정했을 때, 우선 이중 for문을 활용해 모든 칸을 훑어본다.

만약 |i-y| == |j-x| 라면 해당 칸은 대각선 경로에 있는 것이다.

 

제대로 구현된 모습

'개발 > 백준' 카테고리의 다른 글

백준 2239: 스도쿠 (Python)  (0) 2022.07.19
백준 1799번: 비숍 (Python)  (0) 2022.07.19
백준 1921번: 연속합 (Python)  (0) 2022.07.18
백준 2293번: 동전 1 (Python)  (0) 2022.07.14
백준 14499: 주사위굴리기 (Python)  (0) 2022.03.17