알고리즘/백준

백준 16926 : 배열 돌리기 1 Java

코드 공작소 2023. 7. 17. 11:46
반응형

www.acmicpc.net/problem/16926


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 512 MB 1528 762 502 52.731%

문제


입력

첫째 줄에 배열의 크기 N, M과 수행해야 하는 회전의 수 R이 주어진다.

둘째 줄부터 N개의 줄에 배열 A의 원소 Aij가 주어진다.


출력

입력으로 주어진 배열을 R번 회전시킨 결과를 출력한다.

 

28 27 26 25 22 9 15 19 16 8 21 13 10 14 20 7 4 3 2 1


제한

 

 

  • 2 ≤ N, M ≤ 300
  • 1 ≤ R ≤ 1,000
  • min(N, M) mod 2 = 0
  • 1 ≤ Aij ≤ 108

예제 입력

예제 출력

4 4 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
3 4 8 12
2 11 10 16
1 7 6 15
5 9 13 14
5 4 7
1 2 3 4
7 8 9 10
13 14 15 16
19 20 21 22
25 26 27 28
28 27 26 25
22 9 15 19
16 8 21 13
10 14 20 7
4 3 2 1
2 2 3
1 1
1 1
1 1
1 1

풀이 과정

 

 


Java 코드

package hello;

import java.util.Scanner;

/*
 * https://www.acmicpc.net/problem/16926
 * 배열 돌리기 1
 * */

public class B16926 {

	public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);

	int[] dx = { 0, 1, 0, -1 };
	int[] dy = { 1, 0, -1, 0 };
	    
		
        int N = sc.nextInt();
        int M = sc.nextInt();
        int R = sc.nextInt();		//회전수
 
        int[][] 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++) {
		for (int j = 0; j < s; j++) {
			int d =0; //d는 방향
			int ox=j, oy=j;
			int tmp = arr[ox][oy];
			
			while (d<4) {
				int nx = ox + dx[d];
				int ny = oy + dy[d];
				
				if (nx >= j && ny >= j && nx < N - j && ny < M - j) {
					arr[ox][oy] = arr[nx][ny];
					ox = nx;
					oy = ny;
				} else d++;
				
			}
			arr[j+1][j] = tmp;
		}	
	}
        
        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();
        }
	}
}

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 13335 : 트럭 Java  (0) 2023.07.19
백준 17413 : 단어 뒤집기 2 Java  (0) 2023.07.18
백준 17204 : 죽음의 게임 Java  (0) 2023.07.16
백준 16931 : 겉넓이 구하기 Java  (0) 2023.07.15
백준 1966 : 프린터 큐 Java  (0) 2023.07.14