๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/10157)
< ์๋ฆฌ๋ฐฐ์ >
๋ฌธ์ ํ์ด
์ผ์ชฝ์๋๋ถํฐ ์์ํ์ฌ ์, ์ค๋ฅธ์ชฝ, ์๋, ์ผ์ชฝ ์์ผ๋ก ๋์๊ฐ๋ฉด์ ์ข์ ๋ฒํธ๋ฅผ ์ง์ ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _10157_ { // ์๋ฆฌ๋ฐฐ์
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int c = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(bf.readLine());
if (c * r < k) {
bw.write("0");
} else {
boolean arr[][] = new boolean[r][c];
int x = r - 1, y = 0;
int num = 1;
arr[x][y] = true;
int dx[] = { -1, 0, 1, 0 };
int dy[] = { 0, 1, 0, -1 };
int idx = 0;
while (true) {
if (num == k) {
bw.write((y+1)+ " " + (r-x));
break;
}
if (x + dx[idx] < 0 || x + dx[idx] >= r || y + dy[idx] < 0 || y + dy[idx] >= c
|| arr[x + dx[idx]][y + dy[idx]]) {
idx += 1;
if (idx == 4) {
idx = 0;
}
}
x += dx[idx];
y += dy[idx];
arr[x][y] = true;
num += 1;
}
}
bw.flush();
}
}
๋ณ์)
c, r, k : ๊ฒฉ์ ํฌ๊ธฐ, ๋๊ธฐ ๋ฒํธ
arr : ๋๊ธฐ๋ฒํธ ๋ฐฐ์ ์ฌ๋ถ
x , y : ํ์ฌ ์์น
num : ํ์ฌ ๋ฒํธ
dx, dy : ์ํ์ข์ฐ
idx : ์ด๋ ๋ฐฉํฅ
๊ฒฉ์์ ํฌ๊ธฐ, ๋๊ธฐ ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋๊ธฐ๋ฒํธ๊ฐ ๊ฒฉ์์ ๋ฐฐ์ ํ ์ ์๋ ๋ฒํธ๋ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค. ๋ฐฐ์ ํ ์ ์๋ ๋ฒํธ๋ผ๋ฉด ๊ฒฉ์์ 1๋ถํฐ ๊ฐ์ ๋ฐฐ์ ํ๋ฉฐ ์ข์๋ฒํธ๋ฅผ ๊ตฌํ๋ค. ์ผ์ชฝ ์๋๋ถํฐ ์์ํ๊ธฐ ์ํด x, y๋ฅผ ๊ฐ๊ฐ r-1๊ณผ 0์ผ๋ก ์ด๊ธฐํํ๋ค. arr [x][y]๋ฅผ true๋ก ๋ฐ๊ฟ ๋ฐฐ์ ์๋ฃ๋ก ์ ์ฅํ๋ค. k๋ฒ์ ๋ฐฐ์ ํ ์๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
ํ์ฌ ๋ฐฐ์ ํ ๊ฐ์ธ num์ด ๋๊ธฐ๋ฒํธ k๊ณผ ์ผ์นํ๋ค๋ฉด ๋ฐฐ์ ๋ ์ข์ ๋ฒํธ๋ฅผ ์ฐพ์ ๊ฒ์ด๋ฏ๋ก (y+1, r-x)๋ฅผ ์ถ๋ ฅํ๋ฉฐ ์ข ๋ฃํ๋ค. ๋ง์ฝ num๊ณผ k๊ฐ์ด ์ผ์นํ์ง ์๋ค๋ฉด ํ์ฌ ์ด๋๋ฐฉํฅ์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ์ฌ ๊ฒฉ์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋๊ฑฐ๋, ์ด๋ฏธ ๋ฐฐ์ ๋ ๊ณณ์ด๋ผ๋ฉด ๋ฐฉํฅ์ ๋ฐ๊ฟ์ค๋ค. ํ์ฌ ์ด๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ํ arr[x][y]๋ฅผ true๋ก ์ ์ฅํ๊ณ num ๊ฐ์ 1 ๋ํด์ค๋ค.
* ์ฒ์์ k ๊ฐ์ด 1์ผ ๋๋ฅผ ๊ณ ๋ คํ์ง ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1986_์ฒด์ค (0) | 2024.05.03 |
---|---|
[Baekjoon] 13022_๋๋์ ์ฌ๋ฐ๋ฅธ ๋จ์ด (1) | 2024.05.02 |
[Baekjoon] 7490_0 ๋ง๋ค๊ธฐ (0) | 2024.04.30 |
[Baekjoon] 18290_NM๊ณผ K (1) (0) | 2024.04.29 |
[Baekjoon] 1418_K-์ธ์ค์ (0) | 2024.04.26 |