728x90
✅ 문제 요약
규영이는 고정적인 순서로 카드를 내고 인영이는 9! 경우의 수 순서대로 카드를 낼 때
두 사람의 최종적인 카드 점수 합을 비교하여 규영이가 이기는 경우의 수와 지는 경우의 수를 출력하라
🤔 문제 접근
규영이가 갖게될 카드가 입력으로 주어지기 때문에 크기 19인 (1부터 18까지를 위함) boolean 배열을 만들어
9가지 수를 입력 받을 때 boolean배열[해당수] = true 를 해주며 규영이의 카드 배열 gnum에 저장하고
이후 false인 수들이 인영이의 카드 이므로 크기 9의 inum 배열에 넣어두었다.
재귀 호출을 통해 icards 배열에 인영이가 낼 카드의 순서를 만들어 두고 이후 규영이의 카드와
순차적으로 비교하여 점수를 계산해주어 규영이의 승, 패 개수를 증가시켜주었다.
인영이가 낼 카드의 순서를 미리 만들어두는 것이 핵심이 되었던 문제였다.
🚨CODE
import java.io.*;
import java.util.*;
class Solution {
static boolean[] nums;
static int[] gnum;
static int[] inum;
static int[] icards;
static boolean[] visit;
static int win, lose;
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
nums = new boolean[19];
gnum = new int[9]; // 규영
inum = new int[9]; // 인영
visit = new boolean[9];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i<9; i++) {
int num = Integer.parseInt(st.nextToken());
gnum[i] = num;
nums[num] = true;
}
int idx = 0;
for(int i = 1; i<19; i++) {
if(!nums[i])
inum[idx++] = i;
}
icards = new int[9];
win = 0; lose = 0;
checkSeq(0);
bw.write(String.format("#%d %d %d\n", test_case, win, lose));
} // end of testcase
bw.flush();
}
public static void checkSeq(int count){
if(count == icards.length) {
cal();
return;
}
for(int i = 0; i<icards.length; i++) {
if(visit[i])
continue;
visit[i] = true;
icards[count] = inum[i];
checkSeq(count+1);
visit[i] = false;
}
}
public static void cal() {
int gpoint = 0;
int ipoint = 0;
for(int i = 0; i<9; i++) {
if(gnum[i] > icards[i]) {
gpoint += gnum[i] + icards[i];
}else {
ipoint += gnum[i] + icards[i];
}
}
if(gpoint > ipoint)
win++;
else
lose++;
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA-L2] 프로그래머스 - 올바른 괄호 (1) | 2024.04.28 |
---|---|
[JAVA-D3] SWEA 1873 - 상호의 배틀필드 (0) | 2024.04.25 |
[JAVA-D3] SWEA 1493 - 수의 새로운 연산 (0) | 2024.04.24 |
[D4-JAVA] SWEA 1238 - Contact (1) | 2024.04.19 |
[D4-JAVA] SWEA 1210 - ladder (0) | 2024.04.17 |