on
[백준] 17276 - 배열 돌리기
[백준] 17276 - 배열 돌리기
[문제링크]
0. 단순한 구현 문제
1. 4개의 대각선을 옮기는 작업을 한다
두 수를 swap하듯, 하나를 백업하고 후에 복구
2. -X 각도로의 회전은 360-X 각도의 회전과 같다
별도의 함수를 만들지 않고, 45도 회전 함수를 동일하게 사용
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ static int[][] map; static int n,d; public static void main(String[] args)throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int tc = pint(br.readLine()); for (int test = 1; test <= tc; test++) { StringTokenizer st = new StringTokenizer(br.readLine()); n = pint(st.nextToken()); d = pint(st.nextToken())/45; if(d<0)d+=8; map=new int[n][n]; for (int i = 0; i < n; i++) { st = new StringTokenizer(br.readLine()); for (int j = 0; j < n; j++) { map[i][j]=pint(st.nextToken()); } } for (int i = 0; i < d; i++) { spin(); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { sb.append(map[i][j]).append(" "); }sb.append("
"); } }System.out.println(sb); } static void spin() { int[] backup = new int[n]; for (int i = 0; i < n; i++)backup[i]=map[i][i];//백업 for (int i = 0; i < n; i++)map[i][i]=map[n/2][i]; for (int i = 0; i < n; i++)map[n/2][i]=map[n-i-1][i]; for (int i = 0; i < n; i++)map[n-i-1][i]=map[n-i-1][n/2]; for (int i = 0; i < n; i++)map[i][n/2]=backup[i]; } static int pint(String s) { return Integer.parseInt(s); } }
결과 화면
from http://nato-blog.tistory.com/140 by ccl(S) rewrite - 2021-10-11 04:27:52