728x90
반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
순열 문제
public class SWEA_6808 {
static int[] gyu;
static int[] inyoung;
static int win = 0, lose = 0;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(in.readLine());
for(int t=1;t<=T;t++) {
boolean numbers[] = new boolean[19];
gyu = new int[9];
inyoung = new int[9];
StringTokenizer st = new StringTokenizer(in.readLine()," ");
// init 규영
for(int i=0;i<9;i++) {
int tmp = Integer.parseInt(st.nextToken());
gyu[i] = tmp;
numbers[tmp] = true;
}
//init 인영
int j =0;
for(int i=1;i<=18;i++) {
if(!numbers[i]) {
inyoung[j] = i;
j++;
}
}
win = 0; lose = 0;
perm(0,new int[9],new boolean[9]);
sb.append("#").append(t).append(" ").append(win).append(" ").append(lose).append("\n");
}
System.out.println(sb);
}
static void perm(int toSelect, int[] selected, boolean[] visited) {
if(toSelect == 9) {
int scoreG = 0; // 규영이 점수 합
int scoreI = 0; // 인영이 점수 합
for(int i=0;i<9;i++) {
if(gyu[i]>selected[i])
scoreG += (gyu[i]+selected[i]);
else
scoreI += (gyu[i]+selected[i]);
}
if(scoreG>scoreI) win++;
else if(scoreG<scoreI) lose++;
return;
}
for(int i=0;i<9;i++) {
if(!visited[i]) {
visited[i] = true;
selected[toSelect] = inyoung[i];
perm(toSelect+1, selected, visited);
visited[i] = false;
}
}
}
}
728x90
반응형
'알고리즘 > swea' 카테고리의 다른 글
[문제] SWEA 1486 장훈이의 높은 선반 (0) | 2021.03.05 |
---|---|
[문제]SWEA 8382 방향전환 (0) | 2021.03.05 |
[문제] SWEA 1228번 암호문1 (0) | 2021.02.08 |
[문제] SWEA 5215번 햄버거 다이어트 (0) | 2021.02.08 |
[문제] SWEA 1861번 정사각형 방 (0) | 2021.02.07 |