í°ì¤í 리 ë·°
ì¶ì² : https://www.acmicpc.net/problem/6987
6987ë²: ìë컵
ìë컵 ì¡°ë³ ìµì¢ ìì ììë 6ê°êµì¼ë¡ 구ì±ë ê° ì¡°ë³ë¡ ëì¼í ì¡°ì ììë êµê°ë¤ê³¼ í ë²ì©, ê° êµê°ë³ë¡ ì´ 5ë²ì 경기를 ì¹ë¥¸ë¤. ì¡°ë³ë¦¬ê·¸ê° ëë í, 기ìê° ë³´ë´ì¨ ê° ëë¼ì ì¹, 무ì¹ë¶
www.acmicpc.net


ð Solve
ì주 ìì ì ë¨ìí ì¹, 무, í¨ ì«ìë¡ë§ ë¹êµí´ì 문ì 를 íìì ë ì¤í¨íë 문ì ìëë°,
ê·¸ëì ì¬ê· ë¶ë¶ 문ì 를 ë§ì´ íì´ë³´ê³ ë¤ì íì´ë³´ë ì´ë µì§ ìê² í´ê²°í ì ìììµëë¤.
í´ë¹ 문ì ë ìì ë¡ ëììë 그림과 í ì¤í¸ ì¼ì´ì¤ì ë°°ì´ ííê° ê°ì§ ììì ë§¤ë² ì ë ¥ì ë°ì ëë§ë¤ 주춤íê² ëë ê² ê°ìµëë¤. íì§ë§ ìì¼ë¡ ë§¤ì¹ ê²°ê³¼ë¥¼ ê·¸ë ¤ë³´ë©´ ì´ë µì§ ìê² ìë¡ì´ ë°°ì´ì ë§ë¤ ì ììµëë¤.
ì ë í ê²ìë¹ 6íì ì¹,무,í¨ ì 보를 ê°ì§ë gameë°°ì´ê³¼ 모ë íì 경기 ë§¤ì¹ ì 보를 ê°ê³ ìë matchë°°ì´ì ë§ë¤ì´ì£¼ììµëë¤. í ì¤í¸ ì¼ì´ì¤ì 첫 ë²ì§¸ ê²½ì°, ë§ë¤ì´ì§ gameë°°ì´ê³¼ matchë°°ì´ì ì´í´ë³´ë©´ ë¤ìê³¼ ê°ìµëë¤.

ì ì ë³ìë¡ isPossible를 ë§ë¤ì´ í´ë¹ ê²ìì´ ì í¨íì§ ê²ì¬í©ëë¤.
ë§ì½ í íì 경기 ìê° 5ê° ìëë¼ë©´ isPossibleë falseì´ê³ , ë¤ì ê²ìì íìí©ëë¤.
matchingí¨ììì team1ê³¼ team2를 matchë°°ì´ìì ë½ìì ì¤ì í©ëë¤.
í´ë¹ gameë°°ì´ì ê°ì´ ë¨ììë¤ë©´ ê°ë¥í ê²½ì°ì´ë¯ë¡, ì¹/무/í¨ì ìì ë°ë¼ 모ë ê²½ì°ë¥¼ ê²ì¬í©ëë¤.
ì¬ê·ë¥¼ ëë¦¬ê³ ë ë¤, ê¼ ìë ìíë¡ ëë ¤ëìì¼ ë¤ì ê²ì¬ì ìí¥ ìì´ íìí ì ììµëë¤.
roundì ìê° 15ë¡ ëª¨ë 경기를 ë¤ íìíë¤ë©´ í´ë¹ ê²ìì ê°ë¥í ê²½ì°ì´ë¯ë¡ isPossibleì trueë¡ ì¤ì í©ëë¤.
matchingí¨ì를 ë¤ ëê³ ë ë¤, isPossibleì´ trueë¼ë©´ 1ì ì¶ë ¥, falseë¼ë©´ 0ì ì¶ë ¥í©ëë¤.
â Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] game;
static int[][] match = new int[15][2];
static boolean isPossible;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int idx = 0;
for(int i=0;i<6;i++){
for(int j=i+1;j<6;j++){ //ê²ì match ì§ì
match[idx][0] = i;
match[idx][1] = j;
idx++;
}
}
outer : for(int t=0;t<4;t++){
st = new StringTokenizer(br.readLine());
game = new int[6][3];
for(int i=0;i<6;i++){ //6í ê° ì´ê¸´ì, ë¹ê¸´ì, ì§ì
int win = Integer.parseInt(st.nextToken());
int draw = Integer.parseInt(st.nextToken());
int lose = Integer.parseInt(st.nextToken());
if(win+draw+lose!=5){ //í íì 경기 ìê° 5ê° ìëë¼ë©´ ë¶ê°
sb.append("0 ");
continue outer;
}
game[i][0] = win;
game[i][1] = draw;
game[i][2] = lose;
}
isPossible = false;
matching(0);
sb.append(isPossible? "1 ":"0 ");
}
System.out.println(sb);
}
private static void matching(int round){
if(round==15){
//15경기 ë¤ ê°ë¥íë¤ë©´
isPossible = true;
return;
}
int team1 = match[round][0];
int team2 = match[round][1];
//ì¹/무/í¨ì ìê° ë¨ììì¼ë©´ 모ë ê²½ì° ê²ì¬
if(game[team1][0] > 0 && game[team2][2] > 0){
//team1:ì¹, team2:í¨
game[team1][0]--;
game[team2][2]--;
matching(round+1);
//ìí ë¤ì ëë ¤ë기
game[team1][0]++;
game[team2][2]++;
}
if(game[team1][1] > 0 && game[team2][1] > 0){
//team1:무, team2:무
game[team1][1]--;
game[team2][1]--;
matching(round+1);
//ìí ë¤ì ëë ¤ë기
game[team1][1]++;
game[team2][1]++;
}
if(game[team1][2] > 0 && game[team2][0] > 0){
//team1:í¨, team2:ì¹
game[team1][2]--;
game[team2][0]--;
matching(round+1);
//ìí ë¤ì ëë ¤ë기
game[team1][2]++;
game[team2][0]++;
}
}
}'ìê³ ë¦¬ì¦ > ë°±ì¤' ì¹´í ê³ ë¦¬ì ë¤ë¥¸ ê¸
- TAG
- BOJ, bruteforce, Java, ë°±ì¤, ìì íì, ì¬ê·
- ë°ê°ìµëë¤. ê¸ì 구ì±ê³¼ íë¦ì´ ë§¤ì° ìì°ì¤ë¬ì ìµëë¤.â¯
- ë¤ë ë¤ ê°ëë¤~ ì½ë ë´ë´ 몰ì íì´ì. ììì ìë¯¸ë¡ â¯
- ë°ë»í ì´ì¼ê¸° ëë¶ì íë£¨ê° ë ì¦ê±°ìì¡ì´ì. ê°ì¬í©ëâ¯
- ê¸ì´ ì°¸ ê¹ì´ê° ìë¤ì. ê°ì ê³¼ ë ¼ë¦¬ê° ì ì¡°í를 ì´ë¤â¯
- Total
- 1,011
- Today
- 0
- Yesterday
- 0
- docker-compose
- ìì´í 59
- ìì´
- ë°±ì¤
- ì´ìì²´ì
- ì¡°í©
- ì´íí°ë¸ìë°
- IMAGE
- dp
- ìì´í 60
- ìê³ ë¦¬ì¦
- BFS
- ìì´í 61
- ê·¸ëííì
- Java
- EffectiveJava
- docker
- Container
- Retrofit2
- í í°ê¸°ë°ì¸ì¦
- subset
- cicd
- ìí
- bruteforce
- ìì íì
- DevOps
- BOJ
- springboot
- OS
- dfs
