728x90
๐๋ฌธ์ ๋งํฌ
20056๋ฒ: ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
์ฒซ์งธ ์ค์ N, M, K๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ํ์ด์ด๋ณผ์ ์ ๋ณด๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ํ์ด์ด๋ณผ์ ์ ๋ณด๋ ๋ค์ฏ ์ ์ ri, ci, mi, si, di๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์๋ก ๋ค๋ฅธ ๋ ํ์ด์ด๋ณผ์ ์์น
www.acmicpc.net
๐ป์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class BJ_G4_20056 {
public static class Fireball {
int r;
int c;
int m;
int s;
int d;
Fireball(int r, int c, int m, int s, int d) {
this.r = r;
this.c = c;
this.m = m;
this.s = s;
this.d = d;
}
}
static int N, M, K;
static ArrayList<Fireball> map[][];
static ArrayList<Fireball> fireballList = new ArrayList<>();
static int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
static int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
map = new ArrayList[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
map[i][j] = new ArrayList<>();
}
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int r = Integer.parseInt(st.nextToken()) - 1;
int c = Integer.parseInt(st.nextToken()) - 1;
int m = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
map[r][c].add(new Fireball(r, c, m, s, d));
fireballList.add(new Fireball(r, c, m, s, d));
}
for (int k = 0; k < K; k++) {
// 1. ํ์ด์ด๋ณผ ์ด๋
moveFireball();
// 2. 2๊ฐ ์ด์ ํ์ด์ด๋ณผ์ด ์๋ ์นธ
combineFireball();
// fireballList ์
๋ฐ์ดํธ ํด์ฃผ๊ธฐ
makeFireballList();
}
int answer = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (map[i][j].size() > 0) {
for (Fireball fireball : map[i][j]) {
answer += fireball.m;
}
}
}
}
System.out.println(answer);
}
private static void makeFireballList() {
fireballList = new ArrayList<>();
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (map[i][j].size() > 0) {
for (Fireball fireball : map[i][j]) {
fireballList.add(fireball);
}
}
}
}
}
private static void combineFireball() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (map[i][j].size() >= 2) {
// 2-1. ํ์ด์ด๋ณผ ํ๋๋ก ํฉ์น๊ธฐ
int m = 0;
int s = 0;
int even = 0;
int odd = 0;
for (Fireball fireball : map[i][j]) {
m += fireball.m;
s += fireball.s;
if (fireball.d % 2 == 0) even++;
else odd++;
}
m /= 5;
s /= map[i][j].size();
map[i][j] = new ArrayList<>();
if (m == 0) continue;
boolean flag = false;
if (even == 0 || odd == 0) {
flag = true;
}
// 2-2. ํ์ด์ด๋ณผ 4๊ฐ๋ก ๋๋๊ธฐ
if (flag) {// ๋ชจ๋ ํ์๊ฑฐ๋ ๋ชจ๋ ์ง์
for (int dd = 0; dd < 8; dd += 2) {
map[i][j].add(new Fireball(i, j, m, s, dd));
}
} else {
for (int dd = 1; dd < 8; dd += 2) {
map[i][j].add(new Fireball(i, j, m, s, dd));
}
}
}
}
}
}
private static void moveFireball() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
map[i][j] = new ArrayList<>();
}
}
for (Fireball fireball : fireballList) {
fireball.r = (fireball.r + (dx[fireball.d] + N) * fireball.s) % N;
fireball.c = (fireball.c + (dy[fireball.d] + N) * fireball.s) % N;
map[fireball.r][fireball.c].add(fireball);
}
}
}
โณํ๊ณ
- ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ์์์ for๋ฌธ์์ break/continue ๋ก์ง์ด ํท๊ฐ๋ ค์ ์ค๋ฅ๋ฅผ ์ฐพ๋๋ฐ ํ์ฐธ ๊ฑธ๋ ธ๋ค.
728x90
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Algorithm/Baekjoon] 1, 2, 3 ๋ํ๊ธฐ 4 - 15989 (S1/JAVA) (0) | 2023.07.19 |
|---|---|
| [Algorithm/Baekjoon] ๋ฑ์ ๊ตฌํ๊ธฐ - 1205 (S4/JAVA) (0) | 2023.07.18 |
| [Algorithm/Baekjoon] ํ๋์์ ๋ณ๋ฅ๋ณ์ด ๋น๋ฐ์น๋ค - 14658 (G3/JAVA) (2) | 2023.07.11 |
| [Algorithm/Baekjoon] A์ B 2 - 12919 (G5/JAVA) (0) | 2023.07.10 |
| [Algorithm/Baekjoon] ์ฟ ํค์ ์ ์ฒด ์ธก์ - 20125 (S4/JAVA) (1) | 2023.07.07 |