알고리즘 풀이/백준(Boj)
백준(BOJ) 16985번 - Maaaaaaaaaze
100win10
2019. 11. 25. 01:51
문제 : https://www.acmicpc.net/problem/16985
16985번: Maaaaaaaaaze
첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 의미한다.
www.acmicpc.net
풀이 :
크기가 y =5 x = 5 z = 1인 블럭이 5개 있다.
이 블럭들의 순서는 next_permutation 함수를 통해서 01234 부터 ~ 43210 까지의 순서들로
각각 처리해주어야 한다.
( 5! 으로 120가지 경우의 수 )
순서가 정해진 블럭은 5x5x5 정육면체이다. 이 정육면체는 블럭5개가 합쳐있는 것이고
각각의 블럭은 회전해야 한다. 이를 재귀적으로 구현해주자.
예를들면 위에 블럭부터 0번 회전 // 0번 회전 // 0번 회전 // 0번 회전 // 0번 회전 부터
4번 회전 // 4번 회전 // 4번 회전 // 4번 회전 // 4번 까지의 경우의 수를 모두 구해주어야 한다.
(4^n 개로 256경우의수)
경우의 수를 구할때는 BFS를 통해 정육면체의 0,0,0 부터 4,4,4,까지 가는 최소 경로를 구해주면 된다.
(N^3)
코드( C ++ )