Tags
- SpringBoot
- greedy
- ๋๋น ์ฐ์ ํ์
- DP
- BOJ
- Java
- ๊ต์ฌ
- dfs
- stack
- ๊ทธ๋ํ ์ด๋ก
- Python
- ๊ตฌํ
- LV2
- Dynamic Programming
- ์๋ฃ๊ตฌ์กฐ
- queue
- PGM
- CodingTest
- ์ ๋ ฌ
- ๊ทธ๋ํ ํ์
- sort
- ๋ฌธ์์ด
- ์๋ฎฌ๋ ์ด์
- Study
- BFS
- ๋ฐฑํธ๋ํน
- ์ ์๋ก
- ์ํ
- ๊น์ด ์ฐ์ ํ์
- Brute Force Algorithm
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_6987 : ์๋์ปต ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์๋์ปต์์ 6๊ฐ์ ๊ตญ๊ฐ๊ฐ ์๋ก 1๋ฒ์ฉ ๊ฒฝ๊ธฐ๋ฅผ ๋ฐ๊ณ ๋์จ ๊ฒฐ๊ณผ๋ก ๊ฐ๋ฅํ์ง ๋ถ๊ฐ๋ฅํ์ง ํ๋จํ๋ค.
- 4๋ฒ์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋๋ฐ, ํ ๋๋ผ์ ์น, ๋ฌด, ํจ์ ์๋ก ์ ๋ ฅ๋๋ค.
- ๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ด๋ฉด 1, ๋ถ๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ด๋ฉด 0์ ๋ฐํํ๋ค.
- 6๊ฐ์ ๊ตญ๊ฐ์์ ๊ฒฝ๊ธฐ๋ฅผ ๋ฐ๋ ๊ฒฝ์ฐ์ ์๋ 6C2 = 6*5/2 = 15๊ฐ ์ด๋ค.
- ์น/๋ฌด/ํจ ์๊ด์์ด ์ด 15๋ฒ์ ๊ฒฝ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฉด, ์ฌ๋ฐ๋ฅธ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์ด๋ค.
- ์ ๋ ฅ ์ ํ์ด 0~6 ์ด๋ฏ๋ก, ํ ๊ตญ๊ฐ์ ์น๋ฌดํจ์ ํฉ์ด 5๊ฐ ๋๋์ง ํ์ธํด์ผ ํ๋ค.
- 15๋ฒ์ ๊ฒฝ๊ธฐ๋ฅผ ์งํํ๋ฉฐ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์์ 1์ฉ ๋นผ๋ ๋ฐฉ์์ผ๋ก ์ญ ์ถ์ ํ๋ค.
- 15๋ฒ ๋ชจ๋ ํ์ธ ๊ฐ๋ฅํด์ผ ํ๋ค. (๋ชจ๋ 0์ด ๋์ด์ผํ๋ค)
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static final int SIZE = 15, COUNTRY = 6, GAME = 4;
static int[][] matches, wc_result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
matches = new int[SIZE][2];
int idx = 0;
for (int i = 0; i < COUNTRY - 1; i++) {
for (int j = i + 1; j < COUNTRY; j++) {
matches[idx][0] = i;
matches[idx][1] = j;
idx++;
}
}
for (int i = 0; i < GAME; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
wc_result = new int[COUNTRY][3]; // win, draw, lose
boolean flag = true;
for (int j = 0; j < COUNTRY; j++) {
int w = wc_result[j][0] = Integer.parseInt(st.nextToken());
int d = wc_result[j][1] = Integer.parseInt(st.nextToken());
int l = wc_result[j][2] = Integer.parseInt(st.nextToken());
if (w + d + l != COUNTRY - 1)
flag = false;
}
if (flag && worldCup(0)) {
System.out.print(1 + " ");
} else
System.out.print(0 + " ");
}
}
private static boolean worldCup(int idx) {
if (idx == SIZE) return true;
int a_country = matches[idx][0];
int b_country = matches[idx][1];
if (wc_result[a_country][0] > 0 && wc_result[b_country][2] > 0) { // a์น, bํจ
wc_result[a_country][0]--;
wc_result[b_country][2]--;
if(worldCup(idx + 1)) return true;
wc_result[a_country][0]++;
wc_result[b_country][2]++;
}
if (wc_result[a_country][1] > 0 && wc_result[b_country][1] > 0) { // ๋ฌด์น๋ถ
wc_result[a_country][1]--;
wc_result[b_country][1]--;
if(worldCup(idx + 1)) return true;
wc_result[a_country][1]++;
wc_result[b_country][1]++;
}
if (wc_result[a_country][2] > 0 && wc_result[b_country][0] > 0) { // aํจ, b์น
wc_result[a_country][2]--;
wc_result[b_country][0]--;
if(worldCup(idx + 1)) return true;
wc_result[a_country][2]++;
wc_result[b_country][0]++;
}
return false;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋๋ผ์ ์ COUNTRY, ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ์ GAME, 6๊ฐ ์ค 2๊ฐ๋ฅผ ๋ฝ๋ ์กฐํฉ ์ SIZE๋ฅผ ์ ์ฅํด๋๋ค.
- 2์ฐจ์ ๋ฐฐ์ด matches์๋ 15๊ฐ์ง ๋งค์น ๋ฐฉ๋ฒ(๋ช ๋ฒ ๋๋ผ๊ฐ ๋ช ๋ฒ ๋๋ผ์ ๊ฒฝ๊ธฐํ๋์ง)์ ์ ์ฅํ๊ณ ,
wc_result๋ ์ ๋ ฅ๋๋ 4๋ฒ์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํ ๋ฒ์ฉ ์น,๋ฌด,ํจ๋ก ๋๋ ์ ์ฅํ๋ค.- ํ ๋๋ผ์ ์น,๋ฌด,ํจ์ ํฉ์ด 5๊ฐ ์๋๋ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค.
- worldCup() ๋ฉ์๋๋ 0๋ฒ ๊ฒฝ๊ธฐ๋ถํฐ 15๋ฒ ๊ฒฝ๊ธฐ๊น์ง ์งํ ๊ฐ๋ฅํ๋ฉด true๋ฅผ ๋ฐํํ๋ค.
- ํ ๊ฒฝ๊ธฐ์์ ๋ ๋๋ผ์ ๊ฒฐ๊ณผ๋ฅผ ์น,๋ฌด,ํจ๋ก ๋๋ ๊ฐ๊ฐ ์ฌ๊ท๋ก ๋ฃ๋๋ค.
- ๋ง์ฝ ์น,๋ฌด,ํจ ๋ชจ๋ ๋ถ๊ฐ๋ฅํ๋ฉด false๋ฅผ ๋ฐํํ๋ค.(๋ฐฑํธ๋ํน)
- true๋ ์ฐ์์ผ๋ก ๋ฐํํด์ ์ฆ์ ์ข ๋ฃํ ์ ์๋๋ก ํ๋ค.
- woldCup() ์ ๊ฒฐ๊ณผ๊ฐ true์ด๋ฉด 1์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ํ๊ฐ ์์ข์๋ ํ์๋๋ ์ด๋ฐ ๋ฌธ์ ๋ถ์๋ ์๋ง์ด์๊ณ , ๋๋ฒ๊น
๋ ์ ๋๋ก ํ์ง ๋ชปํ๋ค.
- ๋ฉํ์ด ํฐ์ ธ์ ์์ฃผ ์กฐ๊ธ์ฉ ์์ ํ๊ณ , ๊ณ์ ํ๋ ธ์ต๋๋ค๋ง ๋ฐ๋ณตํ๋ค(11%์ ์ง์ฅ)
- ๋๋ฌด ์๊ฐ์์ด ์ด์ผ๋ก ํต๊ณผ๋๊ธธ ๋ฐ๋ ๊ฒ ๊ฐ๋ค.
- ๋ค๋ฅธ ํ์ด ํฌ์คํ
์ ์ฐธ๊ณ ํ๊ณ , ํ์ ๋ค์ ํ ๋ฒ ํ์ด๋ณด์๋ค.
- ์ฝ๋ฉ ๊ณํ์ ์ ์ด๊ฐ๋ฉฐ ํ์ดํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1926 : ๊ทธ๋ฆผ (0) | 2023.03.05 |
---|---|
BOJ_3109 : ๋นต์ง (0) | 2023.02.22 |
BOJ_4963 : ์ฌ์ ๊ฐ์ (0) | 2023.02.21 |
BOJ_17281 : โพ (0) | 2023.02.20 |
BOJ_12865 : ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2023.02.20 |