👀 문제 설명
로그인해야 문제를 볼 수 있다.
✍🏻풀이
인영이의 카드로 순열을 구하고, 순열을 구할 때마다 누가 이기는지 구해주면 된다!
코드
package swea;
// 규영이와 인영이의 카드게임 (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0&categoryId=AWgv9va6HnkDFAW0&categoryType=CODE&problemTitle=6808&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 )
import java.util.*;
import java.io.*;
public class SWEA_6808 {
private static final int fact = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2;
private static int[] a = new int[9];
private static int[] b = new int[9];
private static int aWin;
private static int same;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
aWin = 0;
same = 0;
st = new StringTokenizer(br.readLine());
int[] cards = new int[19];
for (int i = 0; i < 9; i++) {
int cardNum = Integer.parseInt(st.nextToken());
a[i] = cardNum;
cards[cardNum] = 1;
}
int idx = 0;
for (int i = 1; i <= 18; i++) {
if (cards[i] != 1) {
b[idx] = i;
idx++;
}
}
// solve
permutation(0, new int[9], new boolean[9]);
bw.write("#" + tc + " " + aWin + " " + (fact - aWin - same));
bw.newLine();
}
bw.flush();
bw.close();
}
private static void permutation(int cnt, int[] selected, boolean[] visited) {
if (cnt == 9) {
int aNum = 0;
int bNum = 0;
for (int i = 0; i < 9; i++) {
if (a[i] > selected[i]) { // 규영이가 이김
aNum += a[i] + selected[i];
}
else { // 규영이가 짐
bNum += a[i] + selected[i];
}
}
if (aNum > bNum) {
aWin++;
}
else if (aNum == bNum) {
same++;
}
return;
}
for(int i = 0; i < b.length; i++) {
if(!visited[i]) {
visited[i] = true;
selected[cnt] = b[i];
permutation(cnt + 1 , selected, visited);
visited[i] = false;
}
}
}
}
'숨막히는 알고말고 > 문제 풀이' 카테고리의 다른 글
[Baekjoon] 도영이가 만든 맛있는 음식 (0) | 2021.08.12 |
---|---|
[Baekjoon] 백설 공주와 일곱 난쟁이 (0) | 2021.08.12 |
[SWEA] 햄버거 다이어트 (0) | 2021.08.09 |
[SWEA] 가랏! RC카! (0) | 2021.08.09 |
[Baekjoon] 수 찾기 (0) | 2021.08.08 |