알고리즘 풀이/백준(Boj)

백준(BOJ) 16926번 배열 돌리기 1

100win10 2019. 11. 4. 02:48

문제 : https://www.acmicpc.net/problem/16926

 

16926번: 배열 돌리기 1

크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] ↓ ↓ ↑ ↑ A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5] ↓ ↑ A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4

www.acmicpc.net

 

풀이 :

 

재귀적으로 배열이 끝에서만 돌도록 구현해보았다.

 

중요한 것은 wall을 기준으로 wall이 0,0일 때 1,1일 때 2,2일 때를 정하여 왼쪽 위를 기준으로 한 바퀴를 돌리는 것이다.

 

wall의 횟수는 가로와 세로중 짧은 변의 길이를 나누기 2할 수만큼 회전하면 된다.

 

calcWall는 wall이 0이라면 0,0을 기준으로 끝에서만 돌도록 해 주고  1이라면 1,1을 기준으로 돌도록 구현한 것이다.

 

 

코드가 좀 지져분해 졌는데 조금 더 깔끔하고 빠르게 짜도록 더 연습해야겠다.

 

코드 ( C++ )