๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1913)
< ๋ฌํฝ์ด >
๋ฌธ์ ํ์ด
์ค๊ฐ๋ถํฐ ์์ํด์ ์, ์ฐ, ํ, ์ข ์์ผ๋ก ๋ฐฐ์ด์ ์ฑ์ด๋ค. ์ด๋ ์ด๋ํ๋ ์นธ ์๋ 1์นธ 2๋ฒ, 2์นธ 2๋ฒ, 3์นธ 2๋ฒ ์ด๋ฐ ์์ผ๋ก ์ด๋ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class _1913_ { // ๋ฌํฝ์ด
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine());
int m = Integer.parseInt(bf.readLine());
int arr[][] = new int[n][n];
int resultX = (n / 2) + 1, resultY = (n / 2) + 1, idx = 1, turn = 1;
int dx[] = { -1, 0, 1, 0 };
int dy[] = { 0, 1, 0, -1 };
int x = n / 2, y = n / 2, dir = 0;
arr[x][y] = idx++;
while (idx <= n * n) {
for (int j = 0; j < 2; j++) {
for (int i = 0; i < turn; i++) {
x += dx[dir];
y += dy[dir];
arr[x][y] = idx++;
if (idx == m + 1) {
resultX = x + 1;
resultY = y + 1;
}
if (idx > n * n) {
break;
}
}
dir += 1;
if (dir == 4) {
dir = 0;
}
if (idx > n * n) {
break;
}
}
turn += 1;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
bw.write(arr[i][j] + " ");
}
bw.write("\n");
}
bw.write(resultX + " " + resultY);
bw.flush();
}
}
๋ณ์)
n, m : ํ์์ธ ์์ฐ์, N*N ์ดํ์ ์์ฐ์
arr : N*N ํ
resultX, resultY : ์์น๋ฅผ ์ฐพ๊ณ ์ ํ๋ N*N ์ดํ์ ์์ฐ์์ ์์น
idx : ํ์ฌ ๊ฐ
turn : ์ด๋ ์นธ ์
dx, dy : ์, ์ฐ, ํ, ์ข
x, y : ํ์ฌ ์์น
dir : ๋ฐฉํฅ
ํ์์ธ ์์ฐ์์ ์์น๋ฅผ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ์ ๋ ฅ๋ฐ๋๋ค. idx๊ฐ n*n ์ดํ์ผ ๋ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) 2๋ฒ์ฉ 2) ๊ณผ์ ์ ๋ฐ๋ณตํ ํ ๋ฐฉํฅ์ ์ฆ๊ฐ์ํจ๋ค. idx๊ฐ์ด n*n๋ณด๋ค ํฌ๋ค๋ฉด ์ข ๋ฃํ๋ค.
2) turn ์๋งํผ ํ์ฌ ๋ฐฉํฅ๋๋ก ์ด๋ํ ํ idx๊ฐ์ ์ ์ฅํ๋ค. ๋ง์ฝ idx๊ฐ์ด ์ฐพ์ผ๋ ค๋ ์๋ผ๋ฉด ์์น๋ฅผ resultX์ resultY์ ์ ์ฅํ๋ค. idx๊ฐ์ด n*n๋ณด๋ค ํฌ๋ค๋ฉด ์ข ๋ฃํ๋ค.
3) turn ์ฆ๊ฐ
arr ๋ฐฐ์ด์ ์ถ๋ ฅํ ํ resultX์ resultY๋ฅผ ์ถ๋ ฅํ๋ค.
* ๊ฐ์ ์ด๊ธฐํํ ๋ ์ ๊ณ ๋ คํด์ผ ํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1996_์ง๋ขฐ ์ฐพ๊ธฐ (0) | 2024.07.04 |
---|---|
[Baekjoon] 5766_ํ ์๋ฒ์ง๋ ์ ๋ช ํด! (1) | 2024.07.03 |
[Baekjoon] 1985_๋์งํธ ์น๊ตฌ (0) | 2024.07.01 |
[Baekjoon] 4396_์ง๋ขฐ ์ฐพ๊ธฐ (0) | 2024.06.28 |
[Baekjoon] 4108_์ง๋ขฐ์ฐพ๊ธฐ (0) | 2024.06.27 |