티스토리 뷰
boj 1799 : 비숍
https://www.acmicpc.net/problem/1799
기본적인 DFS + 커팅 방법을 사용하여 해결할 수 있다.
백준 9663번 N-Queen와 유사하다.
0. DFS + 커팅방법
지정한 y, x에 놓을 수 있는지 판단하기 위해 (y-1,x-1), (y-2,x-2) ... 를 모두 확인하면 판단을 위해 O(N)의 복잡도가 추가로 소모된다. 판단은 O(1)로 끝내야 한다. true나 false를 담은 check배열을 이용하여 한 번의 접근으로 말을 놓을 수 있는지 판단하도록 모델링해야 한다.
이후, DFS + 커팅 방법을 보완하기 위해 크게 2가지 기법을 추가로 사용하였다.
1. 좌표변환
위와 같이 좌표 변환을 끝내 놓으면, N-Queens문제보다 더 쉬운 N-Rooks 문제로 바뀌게 된다.
좌표변환에는 (y', x') = (y+x, n-1-y+x) 와 같은 적당한 변환식을 이용한다.
구현 편의상 좌표변환을 하였으나, 변환하지않고 Diagonal Check배열을 만드는 방법도 있다.
2. 흑백분리
체스판을 곰곰히 살펴보면, 흑색 발판에 놓인 비숍은 백색 발판에 놓인 말을 절대 잡을 수 없다.
즉, DFS수행시 흑색발판 따로, 백색발판 따로 DFS를 수행해서 합치면 된다는 것을 의미한다.
시간복잡도가 N^N에 달하여 시간초과 나던 것을 (N/2)^(N/2) 수준으로 줄여 시간초과를 해소할 수 있다.
'Problem Solving' 카테고리의 다른 글
boj 1647 : 도시 분할 계획 (0) | 2025.03.11 |
---|---|
boj 16153 비트와 가희 (0) | 2022.09.16 |
boj 11001: 김치 (0) | 2022.05.14 |
boj 20193: 화려한 정사각형 (0) | 2022.04.18 |
boj 1214 : 쿨한 물건 구매 (0) | 2021.06.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 네블컵 2회
- 도시 분할 계획
- 백준알고리즘
- 소수 쌍
- 2016 1차 예선
- 연습문제
- 2469
- 백준 도시 분할 계획
- 크루스칼
- 같은 탑
- 16153
- 백준 1647
- 백준 비숍
- Rectangles
- 화려한 정사각형
- SCPC 2016
- 20193
- BOJ
- 백준
- 풀이
- 비트와 가희
- 쿨한 물건 구매
- codeground
- boj 1799
- 2차 예선
- 백준 1799
- scpc
- 이분매칭
- 알고리즘
- 10159
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함