비숍 2

백준 1799번: 비숍 (Python)

문제 1799번: 비숍 첫째 줄에 체스판의 크기가 주어진다. 체스판의 크기는 10이하의 자연수이다. 둘째 줄부터 아래의 예와 같이 체스판의 각 칸에 비숍을 놓을 수 있는지 없는지에 대한 정보가 체스판 한 줄 단위로 www.acmicpc.net 해설 N-queen과 유사한 백트래킹 활용 문제이다. 얼핏 보기에는 시간제한이 10초나 되어 널널하고, 퀸보다 고려해야 할 경우가 적어서 더 쉬울 것 같지만.. 문제 난이도가 골드 1인 이유가 있다. 처음 시도한 접근 방법은 다음과 같았다. 모든 칸에 대해서 비숍을 '놓거나', '놓지 않거나' 2개 경우가 존재한다. 따라서 백트래킹을 재귀적으로 구현하여 '놓는 경우', '놓지 않는 경우'를 모두 시뮬레이션한다 이후 가장 많은 비숍을 세울 수 있었던 케이스를 정답으로..

개발/백준 2022.07.19

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

체스판에서 대각선 경로를 구할 때 어떻게 구현을 해야 할까? 간단하게 보일 수도 있지만 막무가내로 구현하면 코드가 상당히 더러워질 수 있다. 백준 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) 절댓값을 이용하면..

개발/백준 2022.07.19