https://www.acmicpc.net/problem/17276
๋ฌธ์
ํฌ๊ธฐ๊ฐ n x n์ธ 2์ฐจ์ ์ ์ ๋ฐฐ์ด X๊ฐ ์๋ค. (n์ ํ์)
X๋ฅผ 45° ์ ๋ฐฐ์๋งํผ ์๊ณ๋ฐฉํฅ ํน์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฌ๋ ค๊ณ ํ๋ค. X๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก 45° ๋๋ฆฌ๋ฉด ์๋์ ๊ฐ์ ์ฐ์ฐ์ด ๋์์ X์ ์ ์ฉ๋์ด์ผ ํ๋ค:
- X์ ์ฃผ ๋๊ฐ์ ์ ((1,1), (2,2), …, (n, n)) ๊ฐ์ด๋ฐ ์ด ((n+1)/2 ๋ฒ์งธ ์ด)๋ก ์ฎ๊ธด๋ค.
- X์ ๊ฐ์ด๋ฐ ์ด์ X์ ๋ถ ๋๊ฐ์ ์ผ๋ก ((n, 1), (n-1, 2), …, (1, n)) ์ฎ๊ธด๋ค.
- X์ ๋ถ ๋๊ฐ์ ์ X์ ๊ฐ์ด๋ฐ ํ ((n+1)/2๋ฒ์งธ ํ)์ผ๋ก ์ฎ๊ธด๋ค.
- X์ ๊ฐ์ด๋ฐ ํ์ X์ ์ฃผ ๋๊ฐ์ ์ผ๋ก ์ฎ๊ธด๋ค.
- ์ ๋ค ๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋ ์์์ ๊ธฐ์กด ์์๋ ์ ์ง ๋์ด์ผ ํ๋ค.
- X์ ๋ค๋ฅธ ์์์ ์์น๋ ๋ณํ์ง ์๋๋ค.
๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก 45° ๋๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์์ ๋น์ทํ๊ฒ ์ ์๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ ๊ทธ๋ฆผ ์ค์์ 5x5 ๋ฐฐ์ด X๊ฐ ์๊ณ , ์ด ๋ฐฐ์ด์ ์๊ณ๋ฐฉํฅ ํน์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก 45° ๋๋ ธ์ ๋์ ๊ฒฐ๊ณผ๊ฐ ์ฐ์ธก ๊ทธ๋ฆฌ๊ณ ์ข์ธก์ ์๋ค. ๊ตต์ ์์๋ ์ฃผ ๋๊ฐ์ / ์ค๊ฐ ์ด / ๋ถ ๋๊ฐ์ / ์ค๊ฐ ํ์ ์์นํ ์์์ด๋ค.
์ ๋ ฅ์ผ๋ก 2์ฐจ์ ๋ฐฐ์ด X์ ์ด๋ ๋ฐฉํฅ์ผ๋ก ๋ช ๋ ํ์ ํ ์ง ์ ๋ ฅ ๋ฐ์, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ์ T๊ฐ ์ฃผ์ด์ง๋ค (1 ≤ T ≤ 10).
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด: ์ฒซ ์ค์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ n (1 ≤ n < 500, n์ ํ์) ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ d๊ฐ ์ฃผ์ด์ง๋ค. d๋ 0 ≤ |d| ≤ 360 ์ ๋ง์กฑํ๋ฉฐ |d| ๋ 45์ ๋ฐฐ์์ด๋ค. d๊ฐ ์์์ด๋ฉด ์๊ณ๋ฐฉํฅ์ผ๋ก d° ๋๋ ค์ผ ํ๊ณ , ์์์ด๋ฉด ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก |d|° ๋๋ ค์ผ ํ๋ค. ๋ค์ n์ค์ ๊ฑธ์ณ ๊ฐ ์ค์ n๊ฐ์ ์ ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค (X์ ์์๋ค์ ๋ํ๋ธ๋ค). ๊ฐ ๊ฐ์ 1 ์ด์ 1,000,000 ์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ํ์ ์ฐ์ฐ์ ๋ง์น ํ ๋ฐฐ์ด์ ์ํ๋ฅผ ์ถ๋ ฅํ๋ค. n์ค์ ๊ฑธ์ณ ๊ฐ ์ค์ n๊ฐ์ ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
ํ์ด
๋ฐฐ์ด์ ์๊ณ๋ฐฉํฅ์ผ๋ก 45๋ ๋๋ฆฌ๋ฉด ์ด๋ ๊ฒ ๋์จ๋คโผ๏ธ
d๋ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฌ๋ ๊ฒ์ d + 360 ๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฏ๋ก, ์๊ณ๋ฐฉํฅ๋ง ๊ตฌํ โผ๏ธ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_BOJ_17276_๋ฐฐ์ด๋๋ฆฌ๊ธฐ {
static int n, d;
static int[][] arr, copy;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer;
StringBuilder sb = new StringBuilder();
int testCase = Integer.parseInt(br.readLine());
while(testCase-- > 0){
stringTokenizer = new StringTokenizer(br.readLine());
n = Integer.parseInt(stringTokenizer.nextToken());
d = Integer.parseInt(stringTokenizer.nextToken());
if(d < 0)
d += 360;
d /= 45;
arr = new int[n][n];
copy = new int[n][n];
for(int i = 0 ; i < n ; i++){
stringTokenizer = new StringTokenizer(br.readLine());
for(int j = 0 ; j < n ; j++){
arr[i][j] = Integer.parseInt(stringTokenizer.nextToken());
copy[i][j] = arr[i][j];
}
}
while(d-- > 0){
rotateArr();
}
for(int[] ar : arr){
for(int a : ar)
sb.append(a + " ");
sb.append("\n");
}
}
System.out.println(sb);
}
private static void rotateArr() {
for(int i = 0; i < n ; i++){
copy[i][n/2] = arr[i][i];
copy[i][i] = arr[n/2][i];
copy[n/2][i] = arr[n-i-1][i];
copy[n-i-1][i] = arr[n-i-1][n/2];
}
for(int i = 0; i < n ; i++){
for(int j = 0 ; j < n ; j++){
arr[i][j] = copy[i][j];
}
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 2668 ] ์ซ์๊ณ ๋ฅด๊ธฐ ( ์๋ฐ / JAVA ) (0) | 2021.11.11 |
---|---|
[ ๋ฐฑ์ค / BOJ 17175 ] ํผ๋ณด๋์น๋ ์ง๊ฒจ์ก~ ( ์๋ฐ / JAVA ) (0) | 2021.11.11 |
[ ๋ฐฑ์ค / BOJ 2671 ] ์ ์ํจ ์๋ณ ( ์๋ฐ / JAVA ) (0) | 2021.11.10 |
[ ๋ฐฑ์ค / BOJ 10828 ] ์คํ ( ์๋ฐ / JAVA ) (0) | 2021.11.02 |
[ ๋ฐฑ์ค / BOJ 16953 ] A -> B ( JAVA / ์๋ฐ ) (0) | 2021.11.02 |