-
[BOJ] 배열 돌리기 1Algorithm/BOJ 2020. 2. 10. 22:39
[16926] 배열 돌리기 1
https://www.acmicpc.net/problem/16926
- 배열의 크기(N,M), 회전의 수(R), 배열 정보가 주어졌을 때 배열을 반시계 방형으로 R번 회전시킨 결과를 구하는 문제
Solution
- 코테에서 자주 나오는 유형이니 외워두자.
- 시간 안습
소스코드
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import java.util.Scanner;public class Main {static int n, m, r;static int[] dx = { 0, 1, 0, -1 };static int[] dy = { 1, 0, -1, 0 };static int[][] arr;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();r = sc.nextInt();arr = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {arr[i][j] = sc.nextInt();}}int s = Math.min(n, m) / 2;for (int i = 0; i < r; i++) {rotate(s);}for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println();}}static void rotate(int s) {for (int i = 0; i < s; i++) {int dir = 0;int sx = i;int sy = i;int value = arr[sx][sy];while (dir < 4) {int nx = sx + dx[dir];int ny = sy + dy[dir];if (nx >= i && ny >= i && nx < n - i && ny < m - i) {arr[sx][sy] = arr[nx][ny];sx = nx;sy = ny;} else {dir++;}}arr[i + 1][i] = value;}}}cs 'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 캐슬디펜스 (0) 2020.02.13 [BOJ] 배열 돌리기 3 (0) 2020.02.11 [BOJ] 게리멘더링 (0) 2020.02.10 [BOJ] 캠프 준비 (0) 2020.02.08 [BOJ] 연구소 2 (0) 2020.02.08