갱스타
갱스타의 블로그
갱스타
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • TIL(Today I Learned) (10)
    • 노력만이 살길! (58)
      • 알고리즘 (29)
      • 네트워크 (3)
      • Python (1)
      • Spring Boot (1)
      • 합격하기 (0)
      • Adsp (3)
      • SQLD (10)
      • 데이터분석 (5)
      • 취업일기 (4)
      • IT 프로젝트 관리 (1)
      • 운영체제 (1)
    • Life (10)
      • 일상 그리고 리뷰 (10)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 알고리즘
  • 싸피7기
  • java 알고리즘
  • 싸피합격
  • 백준 달팽이
  • 알고리즘
  • 백준
  • 달팽이 반복문
  • mac 단축키
  • swea
  • 통신
  • 싸피
  • 네트워크
  • SWEA 13038
  • SW Expert Academy
  • 달팽이문제
  • 백준 참외밭
  • Get
  • 백준 2477번
  • post

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갱스타

갱스타의 블로그

카테고리 없음

[swea][java] 6808 규영이와 인영이의 카드게임

2022. 3. 1. 01:01

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
//https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0
public class Solution {
    static boolean[] isSelected;
    static int[] numbers;
    static int[] in;
    static int answer;
    static int[] gyu;
    static int count; //총 경기 횟수
    static int draw; // 비긴 횟수
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int T=Integer.parseInt(st.nextToken());
        gyu=new int[9]; //규영이의 카드 번호를 나타내는 배열
        in=new int[9]; //인영이의 카드 번호를 나타내는 배열
        isSelected=new boolean[9];   //인영이의 카드번호 순열을 위한 checked 배열
        numbers=new int[9];
        boolean[] card=new boolean[19]; //카드 번호는 1부터 19까지.
        //테스트케이스의 수만큼 반복
        for(int tc=0;tc<T;tc++){
            Arrays.fill(card,false);
            st=new StringTokenizer(br.readLine());
            //규영이의 카드 번호를 입력받는다.
            for (int i = 0; i < gyu.length; i++) {
                gyu[i]=Integer.parseInt(st.nextToken());
                card[gyu[i]]=true;
            }
            //인영이의 카드 번호를 알아낸다.
            int tmp=0;
            for (int i = 1; i <= 18; i++) {
                if(!card[i]){
                    in[tmp++]=i;
                }
            }
            count=0;
            answer=0; //
            draw=0;
            Arrays.fill(isSelected,false);
            permut(0);

            System.out.printf("#%d ",tc+1);
            System.out.println((answer)+" "+(count-draw-answer));
            //규영이가 이기는경우, 지는경우 출력
        }
    }

    private static void permut(int cnt) {
        if(cnt==9){
            count++;
            int sumG=0; //규영이 점수 합
            int sumI=0; //인영이 점수 합
            for(int i=0;i<9;i++){
                //인영이와 규영이의 카드를 비교하고 sum을 계산한다.
                if(gyu[i]<numbers[i]){
                    sumI+=(gyu[i]+numbers[i]);
                }else{
                    sumG+=(gyu[i]+numbers[i]);
                }
            }
            if(sumG>sumI) answer++; //규영이가 이는경우 answer 증가시킴.
            if(sumG==sumI) draw++;
            return;
        }
        for(int k=0;k<9;k++){
        if(isSelected[k]) continue;
        numbers[cnt]=in[k];
        isSelected[k]=true;
        permut(cnt+1);
        isSelected[k]=false;

        }


    }

}
    갱스타
    갱스타
    열심히 배워보자

    티스토리툴바