PS

백준 16927. 배열 돌리기 2

tose33 2022. 8. 22. 13:59

https://www.acmicpc.net/problem/16927

 

16927번: 배열 돌리기 2

크기가 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]

www.acmicpc.net

 

가장 쉬운방법은 한 번씩 돌리는 함수를 만들고 R번 돌리는 것이지만 R의 최댓값이 10^9기 때문에 불가능하다. 

 

각 숫자들을 R번 돌렸을때 위치를 한번에 계산해야 한다. 

나는 각 사각형의 둘레를 구하고, 그 사각형의 둘레를 돌면서 다음 위치를 계산해 줬다.

 

(현재 인덱스 + R) % 사각형 둘레 가 다음 위치가 된다.