일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바
- JAVA SPRING
- php 프로그래밍 입문 솔루션
- 한정 분기
- 페이코 친구코드
- 페이코 추천인
- php 프로그래밍 입문 연습문제
- php 프로그래밍
- 스프링
- 최단 경로
- php 프로그래밍 입문 3판
- 페이코 추천인코드
- C
- SWEA
- Java
- 플러터
- C언어
- 파이썬
- php
- php 프로그래밍 입문
- php 프로그래밍 입문 예제
- 페이코 초대코드
- programmers
- 배열
- 백준
- php 프로그래밍 입문 문제풀이
- 자바 스프링
- 플러터 개발환경 설정
- Flutter
- spring
Archives
- Today
- Total
01-22 13:27
ImJay
[SWEA/Java] 6808. 규영이와 인영이의 카드게임 본문
반응형
[SWEA/Java] 6808. 규영이와 인영이의 카드게임
풀이
package edu.ssafy.im.SWEA.D3.No6808;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Solution {
static int[] selected; // 인영이가 선택한 카드를 저장할 배열
static boolean visited[]; // 인영이가 해당 숫자를 이미 선택했는지 확인하는 배열
static int GYU[]; // 규영이가 받은 카드를 저장할 배열
static boolean[] cards; // 각 숫자가 이미 선택되었는지 여부를 저장하는 배열
static long ans; // 규영이가 이긴 경우의 수
static long lose; // 규영이가 지는 경우의 수
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
ans = 0;
lose = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
cards = new boolean[19]; // 숫자가 1부터 18까지이므로 크기를 19로 설정
visited = new boolean[19]; // 숫자가 1부터 18까지이므로 크기를 19로 설정
GYU = new int[9]; // 규영이가 받을 카드는 9장이므로 크기를 9로 설정
selected = new int[9]; // 인영이가 선택할 카드는 9장이므로 크기를 9로 설정
for (int i = 0; i < 9; i++) {
int in = Integer.parseInt(st.nextToken());
cards[in] = true; // 이미 선택된 카드 표시
GYU[i] = in; // 규영이가 받은 카드 저장
}
recursive(0, 0); // 재귀 함수 호출
sb.append("#").append(test_case).append(" ").append(ans).append(" ").append((lose)).append('\n');
}
System.out.println(sb);
}
private static void recursive(int idx, int k) {
if (idx == selected.length) { // 모든 카드를 선택했을 경우
int PointGYU = 0; // 규영이의 점수
int PointINY = 0; // 인영이의 점수
for (int i = 0; i < 9; i++) {
if (selected[i] > GYU[i]) { // 인영이가 선택한 카드가 규영이가 받은 카드보다 큰 경우
PointINY += (selected[i] + GYU[i]); // 인영이 점수에 더함
} else if (selected[i] < GYU[i]) { // 인영이가 선택한 카드가 규영이가 받은 카드보다 작은 경우
PointGYU += (selected[i] + GYU[i]); // 규영이 점수에 더함
}
}
if (PointINY < PointGYU) // 인영이의 점수가 규영이의 점수보다 작은 경우
ans++; // 규영이가 이긴 경우의 수 증가
else if (PointINY > PointGYU) // 인영이의 점수가 규영이의 점수보다 큰 경우
lose++; // 규영이가 지는 경우의 수 증가
return;
}
for (int i = 1; i <= 18; i++) { // 가능한 모든 카드에 대해 반복
if (cards[i]) // 이미 선택된 카드인 경우 건너뜀
continue;
if (!visited[i]) { // 해당 숫자가 이미 선택되지 않은 경우
visited[i] = true; // 해당 숫자를 선택함으로 표시
selected[idx] = i; // 선택한 카드를 저장
recursive(idx + 1, k + 1); // 다음 카드를 선택하기 위해 재귀 호출
visited[i] = false; // 해당 숫자를 선택하지 않음으로 표시
}
}
}
}
반응형
'SW Expert Academy > D3' 카테고리의 다른 글
[SWEA/Java] 1228. 암호문 1 (0) | 2024.02.05 |
---|---|
[SWEA/Java] 1225. 암호생성기 (0) | 2024.02.04 |
[SWEA/Java] 5215. 햄버거 다이어트 (0) | 2024.02.04 |
[SWEA/Java] 7964. 부먹왕국의 차원 관문 (0) | 2024.01.29 |
[SWEA/Java] 1873. 상호의 배틀필드 (0) | 2024.01.24 |
Comments