반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
결국 검색해서 해결했다.
그냥 바로바로 비교하고 점수를 구하면서 하는 건 왜 안되는지 아직 이해가 안됨..
일단 카드를 선택하기만 하고 선택한 카드를 다른 배열에 저장 후 다 선택하면 그때 카드비교를 하며 진행한다.
내 코드
메모리 : 20340 KB
시간 : 2843 ms
코드길이 : 1537 B
[내 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
static int[] K, I;
static boolean[] check;
static int[] compare;
static int win;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for(int t = 1; t <= T; t++) {
sb.append('#').append(t).append(' ');
K = new int[9];
I = new int[9];
boolean[] card = new boolean[19];
st = new StringTokenizer(br.readLine());
//규영이의 카드
for(int i = 0; i <9; i++) {
K[i] = Integer.parseInt(st.nextToken());
card[K[i]] = true;
}
//인영이의 카드
int index = 0;
for(int i = 1; i <= 18; i++) {
if(!card[i])
I[index++] = i;
}
compare = new int[9];
check = new boolean[9];
win = 0;
game(0);
//9!은 362880번이고 둘이 비기는 경우는 없기 때문에 9! - win이 진 횟수이다.
sb.append(win).append(' ').append(362880 - win).append('\n');
}
System.out.print(sb);
}
static void game(int round) {
//비교할 순서에 맞게 카드를 뽑아주었으면
if(round == 9) {
int Kscore = 0;
int Iscore = 0;
//규영이의 카드와 비교해줌(게임진행)
for(int i = 0; i < 9; i++) {
//규영이 카드값이 더 크면
if(K[i] > compare[i])
//규영이의 점수에 카드값의 합을 더해줌
Kscore += K[i] + compare[i];
else//인영이의 카드값이 더 크면
//인영이의 점수에 카드값의 합을 더해줌
Iscore += K[i] + compare[i];
}
//규영이가 이기면 규영이가 이긴수를 더해줌
if(Kscore > Iscore)
win++;
return;
}
for(int i = 0; i < 9; i++) {
//아직 뽑히지 않은 카드면
if(!check[i]) {
//비교할 규영이의 카드의 순서와 같은 곳에 인영이의 카드값을 넣어줌
compare[round] = I[i];
//뽑았으니 true로 변환시켜준 후
check[i] = true;
//다음에 뽑을 카드를 탐색하려 재귀호출
game(round + 1);
//다른 경우를 탐색하기 위해 false로 바꿔준 후 진행
check[i] = false;
}
}
}
}
반응형
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 11285 : 다트게임 (0) | 2023.05.12 |
---|---|
[SWEA] 3131 : 100만 이하의 모든 소수 (0) | 2023.05.12 |
[SWEA] 5948 : 새샘이의 7 - 3 - 5 게임 (0) | 2023.05.12 |
[SWEA] 13428 : 숫자 조작 (0) | 2023.05.12 |
[SWEA] 3282 : 0/1 Knapsack (0) | 2023.05.11 |