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++) {
// 맨 앞의 값을 맨 뒤로
}
// 회전한 값을 배열에 삽입
}
}
}
다른 사람의 풀이 #
- 델타 배열
- 방향 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);