Blog

B16926 배열 돌리기 1

날짜 2024-00-00
사용 언어 Java
문제 유형
문제 URL https://www.acmicpc.net/problem/16926

문제 #

문제 설명 #
제한사항 #

나의 풀이 #

import java.util.Scanner;  
  
public class Main {  
  
    public static void main(String[] args) {  
        Scanner sc = new Scanner(System.in);  
  
        int N = sc.nextInt();  
        int M = sc.nextInt();  
        int R = sc.nextInt();  
  
        int[][] A = new int[N][N];  
        for (int i = 0; i < N; i++) {  
            for (int j = 0; j < M; j++) {  
                A[i][j] = sc.nextInt();  
            }  
        }  
  
        // min(N/2, M/2) 회전하는 그룹의 개수  
        StringBuffer sb = new StringBuffer();  
        for (int i = 0; i < Math.min(N / 2, M / 2); i++) {  
            sb.setLength(0); // 버퍼 초기화  
  
            // 시계 방향으로 삽입  
  
            // R번 회전  
            for (int j = 0; j < R; j++) {  
                // 맨 앞의 값을 맨 뒤로  
            }  
  
            // 회전한 값을 배열에 삽입  
  
        }  
    }  
  
}

실행결과

다른 사람의 풀이 #


  1. 델타 배열
    • 방향 dx = {0, 0, 1, -1}
    • dy = {1, -1, 0, 0}
    • nx = x + dx
    • ny = y + dy
  • 껍질 계산 int d = Math.min(Math.min(Math.min(i, N-i-1), j), M-j-1);
  • 최소거리 계산 int r = R % (2 * (N - 2d) + 2 * (M - 2d) - 4);

관련개념 학습 #