๋ฌธ์ : boj.kr/17143
๋ ์ง: 8์ 24์ผ (ํ )
์ฑ๊ณต์ฌ๋ถ: X
๊ฐ๊น์ด ์์ด๋ฅผ ์ก๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ด๊ฐ ์์ง์ธ๋ค.
์์ด๊ฐ ์์ง์ธ ํ ๊ฐ์ ์๋ฆฌ์ ์์ด๊ฐ ์์ผ๋ฉด ํฌ๊ธฐ ๋น๊ต ํ ๋ ์ค ํ๋ ์ฃฝ์
๊ตฌํํด์ผ ๋ ๋ก์ง
- ๋์์ move
- ๋์์์ ์์ด ์ก๊ธฐ
- ์์ด move
- ์์ด๋ผ๋ฆฌ ์ก์ด ๋จน๊ธฐ
โ
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ์ด ์์ด์ ์์ง์์ ๊ตฌํํ๋ ๊ฒ์ด๋ค.
์์ด์ ์์ง์์์ ์๊ฐํด๋ณผ ๊ฒ์ด ์๋ค. ์์ด๋ speed๋ฅผ ๊ฐ์ง๋ฉฐ 1์ด์ speed๋งํผ ์์ง์ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง์ด๋ฉด์ ๋ฒฝ์ ๋ง๋๋ฉด ๋ฐฉํฅ์ ๋ฐ๊พธ๊ณ ์งํํ๋ค. ์ด๋ฐ ์์ง์์ 0๋ถํฐ speed๊น์ง ์ฆ๊ฐ์ํค๋ฉฐ ํ ๋ฒ์ ํ ์นธ์ฉ ์ด๋ํ๋ฉด์ ๊ตฌํํ ์๋ ์์ง๋ง, ๊ฐ์์์ ์ฌ์ฉํ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ด์ฉํ๋ฉด ์๊ฐ์ ์ข ๋ ๋จ์ถํ ์ ์๋ค.
๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ด์ฉํ๋ฉด ์ด๋ป๊ฒ ๊ตฌํ์ ํ๋ ๊ฒ์ผ๊น?
๊ฐ์๋ฅผ ๋ณด๊ธฐ ์ , ๋ด๊ฐ ์๊ฐํ ๋ฐฉ๋ฒ์ ๋งต์ c ํฌ๊ธฐ๋ก ๋๋๋ ๊ฒ์ด์๋ค. ํ์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ์๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ํด์ ๋ช ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํด๋ณด๋ฉด ์ ์ด ๋ฐฉ๋ฒ์ด ์๋๋์ง ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ํฌ๊ธฐ์ map์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ 3์นธ์ ์ด๋ํด๋ณด์. ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ ์ฉํ๋ฉด 3 % 5 ์ด๋ฏ๋ก 3์ด๋ค.
p
0 1 2 3 4
p
0 1 2 3 4 - 1์นธ
p
0 1 2 3 4 - 2์นธ
p
0 1 2 3 4 - 3์นธ
์ ํํ๊ฒ ์์ง์ผ ์ ์๋ค. ๊ทธ๋ผ ์ด๋ฒ์ ๋ค๋ฅธ ์์๋ฅผ ๋ค์ด๋ณด์.
10์นธ์ ์์ง์ฌ๋ณด์. 10 % 5 = 0์ด๋ค.
p
0 1 2 3 4
p
0 1 2 3 4 - 1์นธ
p
0 1 2 3 4 - 2์นธ
p
0 1 2 3 4 - 3์นธ
p
0 1 2 3 4 - 4์นธ
p
0 1 2 3 4 - 5์นธ
p
0 1 2 3 4 - 6์นธ
p
0 1 2 3 4 - 7์นธ
p
0 1 2 3 4 - 8์นธ
p
0 1 2 3 4 - 9์นธ
p
0 1 2 3 4 - 10์นธ
์์ํ๋ ์์น์ ๋ค๋ฅด๋ค. ์ฌ๊ธฐ์ ์ข ๋ ์๊ฐํด๋ณด๋ฉด ์ ์๋๋์ง ์ง์์ ํ ์ ์๋๋ฐ, ๋ฐ๋ก c๊ฐ 5๋ผ๋ ์ด๋ํ๋ ์นธ ์๋ 4์นธ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ 5๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ฉด 5์นธ์ ์ด๋ํ ๊ฒ์ด ๋์ด๋ฒ๋ ค ์์ํ๋ ๊ฐ๊ณผ ๋ค๋ฅธ ๊ฒ์ด๋ค. ๊ทธ๋ผ 4์นธ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ฉด ๋๋ค. 10 % 4 = 2์ด๋ค. ์์ํ ๊ฒ๊ณผ ๊ฐ์ ์์น๊ฐ ๋์๋ค.
๊ทธ๋ผ ๋ ๋ค๋ฅธ ์์๋ก ์๋ณต์ ํ์ง ์๊ณ ์ค๊ฐ์ ๋ฉ์ถ๋ ๊ฒฝ์ฐ ์ค 7์นธ์ ์์๋ก ์์๋ณด์. 7 % 4 = 3์ด๋ค.
p
0 1 2 3 4
p
0 1 2 3 4 - 1์นธ
p
0 1 2 3 4 - 2์นธ
p
0 1 2 3 4 - 3์นธ
p
0 1 2 3 4 - 4์นธ
p
0 1 2 3 4 - 5์นธ
p
0 1 2 3 4 - 6์นธ
p
0 1 2 3 4 - 7์นธ
์์ํ๋ ์์น์ ๋ค๋ฅด๋ค. ํ์ง๋ง 4์์ 3์ ๋นผ๋ฉด ์์ํ๋ ์์น๊ฐ ๋์จ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ํ์ง๋ง, ์ด๋ค ๊ธฐ์ค์ผ๋ก 4์์ 3์ ๋นผ๋ ๊ธฐ์ค์ ์ ํ ๊ฒ์ธ๊ฐ?์ ๋ํด์ ๋ต์ ๋ด๋ฆฌ์ง ๋ชปํ๋ค....
๊ทธ๋์ ๊ฐ์๋ฅผ ๋ดค๋๋ฐ ์ด๋์ ๋ ๋น์ทํ ๋ฐฉ์์ด์๋ค. ํ์ง๋ง, ๊ฐ์๋ map์ c ํฌ๊ธฐ ์ฆ, ํธ๋๊ฐ ์๋๋ผ ์๋ณต์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ค. ์ด ๋ฐฉ์์ ์ด์ฉํ๋ฉด '๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋์ด์๋ฉด' ์ด๋ผ๋ ๊ธฐ์ค์ ์ธ์ธ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์์ 3์นธ, 10์นธ์ ์ด๋ํ๋ ๊ฒฝ์ฐ๋ ์๋ณต์ 8์นธ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก 8๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ฉด ๊ฐ๊ฐ 3์นธ, 2์นธ์ด ๋์จ๋ค. 10์นธ์ด๋ 3์นธ์ด๋ ์๋์ ๋ฐฉํฅ๋๋ก ์ด๋ํ๋ ๊ฒ์ด๋ฏ๋ก ๊ทธ๋ฅ ์ด๋ํ๋ฉด ๋๋ค. ํ์ง๋ง, ๋ง์ง๋ง ์์น์์ ๋ฐฉํฅ์ด ์ ํ๋ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋์ด์๋ ์๊ฐ ๋์จ๋ค. ๋ฐ๋ก ์์ 7์นธ๋ ๊ทธ๋ ๊ณ 13์นธ๋ ๊ทธ๋ ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ง ๋ฐ๋ํธ์์ ๋ค์ ๋๋จธ์ง๋ฅผ ์ด๋ํ๋ ๋ก์ง์ ๊ตฌํํ๋ฉด ๋๋ค.
์ด๊ฒ๋ง ์๋ฉด !!!
๋๋จธ์ง ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
์ฝ๋
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static int[] dy = {-1, 1, 0, 0};
static int[] dx = {0, 0, 1, -1};
static int r, c, m;
static int[][] map;
static int[][] temp;
static int ret = 0;
static class shark {
int y, x;
int size;
int dir;
int speed;
boolean death;
public shark(int y, int x, int s, int d, int z) {
this.y = y;
this.x = x;
this.speed = s;
this.dir = d;
this.size = z;
this.death = false;
}
public shark() {}
}
static ArrayList<shark> sharks = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
map = new int[r][c];
sharks.add(new shark());
for (int i = 1; i <= m; i++) {
st = new StringTokenizer(br.readLine());
int y = Integer.parseInt(st.nextToken())-1;
int x = Integer.parseInt(st.nextToken())-1;
int s = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken())-1;
int size = Integer.parseInt(st.nextToken());
sharks.add(new shark(y, x, s, d, size));
if (d <= 1) sharks.get(i).speed %= (r - 1);
else sharks.get(i).speed %= (c - 1);
map[y][x] = i;
}
for (int t = 0; t < c; t++) {
for (int y = 0; y < r; y++) {
if (map[y][t] > 0) {
sharks.get(map[y][t]).death = true;
ret += sharks.get(map[y][t]).size;
map[y][t] = 0;
break;
}
}
temp = new int[r][c];
for (int idx = 1; idx <= m; idx++) {
if (sharks.get(idx).death) continue;
int y = sharks.get(idx).y;
int x = sharks.get(idx).x;
int s = sharks.get(idx).speed;
int d = sharks.get(idx).dir;
int ny, nx;
boolean flag = false;
while (true) {
ny = y + s * dy[d];
nx = x + s * dx[d];
if (ny < r && nx < c && ny >= 0 && nx >= 0) break;
if (d <= 1) {
if (ny < 0) {
s -= y;
y = 0;
} else {
s -= r - 1 - y;
y = r-1;
}
} else {
if (nx < 0) {
s -= x;
x = 0;
} else {
s -= c-1-x;
x = c-1;
}
}
d ^= 1;
}
if (temp[ny][nx] > 0) {
if (sharks.get(temp[ny][nx]).size > sharks.get(idx).size)
sharks.get(idx).death = true;
else {
sharks.get(temp[ny][nx]).death = true;
temp[ny][nx] = idx;
}
} else temp[ny][nx] = idx;
sharks.get(idx).y = ny;
sharks.get(idx).x = nx;
sharks.get(idx).dir = d;
}
for (int i = 0; i < r; i++) map[i] = temp[i].clone();
}
System.out.println(ret);
}
}
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea] 1859. ๋ฐฑ๋ง ์ฅ์ ํ๋ก์ ํธ (1) | 2024.08.28 |
---|---|
2632 - ํผ์ํ๋งค (2) | 2024.08.25 |
17406 - ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 [์ฑ๊ณต(๋ฐ๋กํํธ)|01:06:16] (1) | 2024.08.17 |
3190 - ๋ฑ [์ฑ๊ณต(๋ฐ๋กํํธ)|02:14:43] (0) | 2024.08.09 |
๋ฐฑ์ค 12094 - 2048 (Hard) [ํ์ด์ฌ] (0) | 2022.11.22 |