[swexpert] 6808. 규영이와 인영이의 카드게임 (java, D3)
728x90
반응형
한 명의 카드 순서는 고정이라 다른 한 사람의 모든 카드 배열 9! 만큼 순열로 돌리면서 구하면 된다.
비기는 경우는 고려하지 않고 이기거나 지는 경우만 구한다
dfs로 nPr(순열)을 구현하자
import java.util.Scanner;
public class Solution {
static int t;
static int card[];
static int a[],b[];
static int ans,ans2;
static int sum,sum2;
static int p[];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
t=sc.nextInt();
for (int tc = 1; tc <=t; tc++) {
card=new int[19];
a=new int[9];
b=new int[9];
p=new int[9];
for (int i = 0; i < 9; i++) {
int num=sc.nextInt();
card[num]=1;
a[i]=num;
}
int idx=0;
for (int i = 1; i <= 18; i++) {
//나머지 카드
if(card[i]==0) {
b[idx++]=i;
}
}
ans=0;
ans2=0;
nPr(0,0);
System.out.printf("#%d %d %d\n",tc,ans,ans2);
}
}
private static void nPr(int flag,int cnt) {
if(cnt==9) {
sum=0;
sum2=0;
for (int i = 0; i < 9; i++) {
if(a[i]>p[i])sum+=a[i]+p[i];
if(a[i]<p[i]) sum2+=a[i]+p[i];
}
if(sum>sum2)ans+=1;
if(sum<sum2)ans2+=1;
return;
}
for (int i = 0; i < 9; i++) {
if((flag&1<<i)!=0)continue;
p[cnt]=b[i];
nPr(flag|1<<i,cnt+1);
}
}
}
728x90
반응형
'swexpert' 카테고리의 다른 글
[swexpert] 4012. 요리사 (java) (0) | 2021.02.19 |
---|---|
[swexpert] 1247. 최적 경로 (TSP, 외판원순환 문제, JAVA) (0) | 2021.02.18 |
[swexpert] 1233. 사칙연산 유효성 검사 (JAVA) (0) | 2021.02.09 |
[swexpert] 1940. 가랏! RC카! (D2, JAVA) (0) | 2021.02.08 |
[swexpert] 9229. 한빈이와 Spot Mart (D3, java) (0) | 2021.02.08 |
TAGS.