๋ฌธ์
https://www.acmicpc.net/problem/16927
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] nums;
static int n, m, r;
static int[] dx = {0, 1, 0, -1};
static int[] dy = {1, 0, -1, 0};
static int nNext, mNext; // ๋ ๋ง๋ค ์ค์ด๋๋ ๋ณ์ ๊ธธ์ด ์ ์ฅ์ ์ํจ
public static void turn(int start, int nowTurnNum) {
for(int i = 0; i < nowTurnNum ; i++) { // ์ ํจ ํ์ ์ ๋งํผ๋ง ํ์
int x = start;
int y = start;
int tmp = nums[start][start];
int dir = 0; // ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋๋ง๋ค dir์ ๋ฐ๊ฟ์ฃผ์ด ๋ฐฉํฅ ์ ํ
while(dir < 4) {
int nx = x + dx[dir];
int ny = y + dy[dir];
if(nx < start || ny < start || nx >= n-start || ny >= m-start) { // ๋ฒ์ ๋ฒ์ด๋ ์ ๋ฐฉํฅ ์ ํ
dir++;
continue;
}
nums[x][y] = nums[nx][ny];
x = nx;
y = ny;
}
nums[start+1][start] = tmp;
}
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuffer out = new StringBuffer();
st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
nNext = n;
mNext = m;
r = Integer.parseInt(st.nextToken());
int turnNum = Math.min(n, m) / 2; // ํ์ ์์ผ์ผ ํ๋ ๋ ์ ๊ฐ์
nums = new int[n][m];
for(int i = 0; i < n; i++) {
st = new StringTokenizer(in.readLine());
for(int j = 0; j < m; j++) nums[i][j] = Integer.parseInt(st.nextToken());
}
for(int i = 0; i < turnNum; i++) { // ๋ด๋ถ๋ก ๋ค์ด๊ฐ๋ฉด์ ๋ชจ๋ ๋ ์ํ
turn(i, r % ((nNext + mNext - 2) * 2));
nNext -= 2;
mNext -= 2;
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
out.append(nums[i][j]);
if(j < m-1) out.append(" ");
}
out.append("\n");
}
System.out.println(out);
}
}
๐ ๊ตฌํ ๋ฌธ์
[ ๋ก์ง ์ค๋ช ]
โ๏ธ ํ์ ํ๋ ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ฐ๊นฅ์์๋ถํฐ ์์ชฝ์ผ๋ก ํ ์นธ์ฉ์ ๋ ๋ฅผ ํ์ฑํ๊ณ ,
๊ฐ์ ๋ ๋ค์ด ํจ๊ป ๊ทธ๋ฃน์ ํ์ฑํ์ฌ ํ์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
โ๏ธ ๋๋ ํ๋์ ๋ ๋ง๋ค ๊ฐ์ฅ ์ข์ธก ์๋จ์ ๊ผญ์ง์ ์ผ๋ก ๋ณด๊ณ , ๊ผญ์ง์ ์ ์ ์ฅ๋ ๊ฐ์ tmp์ ๋ฃ์ด๋์ ๋ค
์ผ์ชฝ์์๋ถํฐ ํ๋์ฉ ์๋ฆฌ๋ฅผ ์ฎ๊ฒจ์ฃผ๋ ์์ผ๋ก ๋ฐฐ์ด์ ํ์ ์์ผฐ๋ค.
โ๏ธ ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ค์ํ ์ ์, ์ด์ ๋น์ทํ #16926๋ฒ ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ง์ง ํ์ ๋ง ์์ผ๋ ๊ด์ฐฎ๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ํ์ ์ ๋ํ ์
๋ ฅ ๋ฒ์๊ฐ ์์ฃผ ์ปค์ก๊ณ , ํจ์จ์ด ๊ด๊ฑด์ด๋ค.
โ๏ธ ๋ฐ๋ผ์ ๋๋ ์์ฃผ ๋ง์ด ํ์ ํ๊ฒ ๋ ๊ฒฝ์ฐ ์๊ธธ ์ ์๋ ์ค๋ณต๋ ํ์ ์ ํผํ๊ณ ์ ํ๋ค.
์๋ฅผ ๋ค์ด ์ ๊ทธ๋ฆผ ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ฐ๊นฅ ์ชฝ ๋ ๋ 12๋ฒ ํ์ ์ ์์๋ณต๊ตฌ๋์ด ํ์ ์ ์๋ฏธ๊ฐ ์๋ค.
=> 14๋ฒ ํ์ ํ๋ผ๊ณ ์ฃผ์ด์ง๋ค๋ฉด ๊ทธ ์ค 12๋ฒ์ ์ ์ธํ 2๋ฒ๋ง ํ์ ํ์ฌ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
โ๏ธ ์ด์ ๋๋ ๋ ๋ง๋ค ์ ํจํ ํ์ ์์ ๋ํ ์ ํ์์ ๊ตฌํ์๋ค.
๋ ๋ง๋ค ์์๋ณต๊ท๋๋ ํ์ ์ : (์ธ๋ก ๊ธธ์ด + ๊ฐ๋ก ๊ธธ์ด - 2) * 2
=> ๋ ๋ง๋ค ์ ํจํ ํ์ ์ : R % ((์ธ๋ก ๊ธธ์ด + ๊ฐ๋ก ๊ธธ์ด - 2) * 2
๐ก ํผ๋๋ฐฑ
- ๋๋ฌด๋๋ฌด ํท๊ฐ๋ฆฌ๋ ๋ฌธ์ ์๋ค. ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ ์๋ฆฌ์ฆ๋ฅผ ํ์ด๋ณด๋ ์ค์ธ๋ฐ,
๊ฝค ํ๊ธฐ ์ด์ง๋ฌ์ด ๋ฌธ์ ๋ค์ด์ง๋ง,, ํ์คํ ๋์์ด ๋ ๊ฒ ๊ฐ๊ธดํ๋ค.
๋ฌธ์ ์ง: ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ (์๋ฆฌ์ฆ) (acmicpc.net)
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ์ฌ์น์ฐ์ฐ ์ ํจ์ฑ ๊ฒ์ฌ SWEA #1233 (0) | 2022.08.11 |
---|---|
[Java Algorithm] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 BOJ #17406 (0) | 2022.08.10 |
[Java Algorithm] ํ ํ๋ก์ ํธ BOJ #9466 (0) | 2022.08.09 |
[Java Algorithm] ํธ๋ฆฌ BOJ #4803 (0) | 2022.08.09 |
[Java Algorithm] ์จ๋ฐ๊ผญ์ง 4 BOJ #13913 (0) | 2022.08.08 |
๋๊ธ