Tags
- Brute Force Algorithm
- PGM
- ๊น์ด ์ฐ์ ํ์
- ๋ฌธ์์ด
- DP
- greedy
- ๊ทธ๋ํ ์ด๋ก
- ๋ฐฑํธ๋ํน
- ์ํ
- ๋๋น ์ฐ์ ํ์
- SpringBoot
- Study
- CodingTest
- ์ ์๋ก
- Dynamic Programming
- queue
- stack
- ๊ตฌํ
- Python
- BFS
- Java
- dfs
- ์ ๋ ฌ
- LV2
- ์๋ฎฌ๋ ์ด์
- sort
- ์๋ฃ๊ตฌ์กฐ
- BOJ
- ๊ทธ๋ํ ํ์
- ๊ต์ฌ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_17281 : โพ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n๊ฐ์ ์ด๋ ๋ณ ํ์์ ์ฑ์ ์ ์
๋ ฅ๋ฐ๊ณ , ๋์ฌ ์ ์๋ ์ต๋ ๋์ ์ ์ถ๋ ฅํ๋ค.
- ํ์๋ 9๋ช ์ด๋ฉฐ 4๋ฒ ํ์๋ 1๋ฒ ์ ์๋ก ๊ณ ์ ๋์ด ์๋ค.
- ํ ๋ฒ ์ ํด์ง ํ์์ ๋ชจ๋ ์ด๋์ ๋๊ฐ์ด ์ ์ฉ๋๋ค.
- ํ ์ด๋์์ ์ฌ์ฉํ ํ์์ ๋ค์ ์ด๋์์ ์ด์ด์ ์ ์ฉํ๋ค.
- 0์ ์์์ด๊ณ , 1~4๋ ์ํ, 2๋ฃจํ, 3๋ฃจํ, ํ๋ฐ์ด๋ค.
- 4๋ฒ ํ์์ ์ ์ธํ๊ณ , 8์๋ฆฌ์ ์์๋ฅผ ๋ฝ๋ ์์ด์ ๊ตฌํด ํ์์ ๋ชจ๋ ๋น๊ตํ๋ค.
- ๊ฐ ํ์ ๋ณ ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ ์ค ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static int[][] inning_point;
static int[] player;
static boolean[] used;
static int n, max;
private static void perm(int idx) { // idx : ๊ณจ๋ผ์ผ ํ๋ ํ์
if (idx == 10) {
baseBall();
return;
}
if (idx == 4) {
perm(idx + 1); // 4๋ฒ์๋ฆฌ ์คํต
} else {
for (int i = 2; i <= 9; i++) {
if (!used[i]) {
used[i] = true;
player[idx] = i;
perm(idx + 1);
used[i] = false;
}
}
}
}
private static void baseBall() {
int point = 0;
int player_num = 1;
for (int i = 1; i <= n; i++) {
int out = 0;
Queue<Integer> lu = new ArrayDeque<>();
while (out < 3) {
if (inning_point[i][player[player_num]] == 0) {
out++;
} else {
int size = lu.size();
for (int k = 0; k < size; k++) {
int man = lu.poll() + inning_point[i][player[player_num]];
if (man > 3) {
point++;
} else {
lu.add(man);
}
}
if (inning_point[i][player[player_num]] == 4) {
point++;
} else {
lu.add(inning_point[i][player[player_num]]);
}
}
if (++player_num == 10) {
player_num = 1;
}
}
}
max = Math.max(max, point);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
player = new int[10];
used = new boolean[10];
player[4] = 1;
used[1] = true;
inning_point = new int[n + 1][10];
for (int i = 1; i <= n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 1; j <= 9; j++) {
inning_point[i][j] = Integer.parseInt(st.nextToken());
}
}
perm(1);
System.out.println(max);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๊ฐ ์ด๋ ๋ณ ํ์์ ์ฑ์ ์ 2์ฐจ์ ๋ฐฐ์ด inning_point์ ์ ์ฅํ๋ค.
- perm() ๋ฉ์๋์์ 8์๋ฆฌ ํ์์ ๋ํ ์์ด์ ๋ง๋ค์ด ๊ณ์ฐํ๋ค.
- ๋ฝ์ ํ์์ player ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , used์ ํด๋น ์ธ๋ฑ์ค๋ฅผ true๋ก ๋ฐ๊พผ๋ค.
- perm() ๋ฉ์๋๋ฅผ ๋ถ๋ฌ ์ฌ๊ท ํ์์ผ๋ก ์์ด์ ์์ฑํ๋ค.
- ์์ด์ด ์์ฑ๋๋ฉด baseBall()๋ฉ์๋๋ฅผ ํธ์ถํด ์ผ๊ตฌ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ค.
- ๊ฐ ๋ฒ ์ด์ค์ ์ํ๋ฅผ ํ lu๋ฅผ ํตํด ๊ด๋ฆฌํ๋ค.
- ํ์๊ฐ ๊ณต์ ์น๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋งํผ ๊ธฐ์กด์ ์ํ๋ค์ ๋ํด์ค ๋ค ํ์ฌ ํ์ ๊ฐ๋ ์ถ๊ฐํด์ค๋ค.
- ์ต์ 1๊ฐ์ฉ ๋น๊ธฐ๊ธฐ๋ถํฐ 4 ํ๋ฐ์ผ๋ก ๋ชจ๋ ๋๊ฐ๊ธฐ ๊น์ง ์์ผ๋ฉฐ, lu๋ ํญ์ ๋ด๋ฆผ์ฐจ์์ด๋ค.
- ํ์ผ๋ก ๋๊ฐ ํ์์ ์๋ฅผ ์นด์ดํธํ๋ค.
- out์ด 3๋ฒ๋๋ฉด, ํ ์ด๋์ ์ข ๋ฃํ๋ค.
- ๋ชจ๋ ์ด๋์ด ์ข ๋ฃ๋๋ฉด ํ์ผ๋ก ๋๋ฌ ํ ํ์์ ์์ max ๊ฐ ์ค ํฐ ๊ฐ์ max๋ก ์ ์ฅํ๋ค.
- ๊ฐ ๋ฒ ์ด์ค์ ์ํ๋ฅผ ํ lu๋ฅผ ํตํด ๊ด๋ฆฌํ๋ค.
๐ธ end ๐ธ
- ์์ด๊ณผ ์ผ๊ตฌ ๊ท์น์ ๋ํ ๊ตฌํ์ด ์์ธ ๋ฌธ์ ์๋ค.
- ์ฐจ๋ถํ ํ๋ฉด ๊ทธ๋ ๊ฒ๊น์ง ์ด๋ ต์ง ์์๋๋ฐ, ์ค๊ฐ์ค๊ฐ ๋์ด์ ํ๋ค๋ณด๋ ๋ ๋์ด์ง ๊ฒ ๊ฐ๋ค.
- ๋ฒ ์ด์ค ๋ณ ์ํ๋ฅผ ํ๋ก ๊ด๋ฆฌํ๋๋ฐ, boolean์ด๋ int ๋ฐฐ์ด๋ก๋ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค. ์ฝ๋๋ ๋ง์ด ๊ธธ์ด์ง์ง๋ง ํ๋ณด๋ค ๋น ๋ฅด๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_6987 : ์๋์ปต (0) | 2023.02.21 |
---|---|
BOJ_4963 : ์ฌ์ ๊ฐ์ (0) | 2023.02.21 |
BOJ_12865 : ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2023.02.20 |
BOJ_14888 : ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.02.20 |
BOJ_19621 : ํ์์ค ๋ฐฐ์ 2 (0) | 2023.02.20 |