Algorithm/SWEA

SWEA 6808๋ฒˆ - ๊ทœ์˜์ด์™€ ์ธ์˜์ด์˜ ์นด๋“œ๊ฒŒ์ž„

giraffe_ 2022. 8. 9. 22:00

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0&categoryId=AWgv9va6HnkDFAW0&categoryType=CODE&problemTitle=6808&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

 

 

 

 

 

์ฒ˜์Œ์— ์ธ์˜์ด์˜ ์นด๋“œ ์ˆœ์—ด์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ List๋ฅผ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ ๊ฒฐ๊ณผ๊ฐ’์ด ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. ๊ทธ ์ด์œ ๋Š” add๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ ์ค‘๊ฐ„์— ๊ฐ’๋“ค์ด ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฐ’์„ ๋ฎ์–ด์”Œ์›Œ์„œ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟจ๋”๋‹ˆ ๊ฐ’์ด ์ œ๋Œ€๋กœ ๋‚˜์™”๋‹ค.

 

์ˆœ์—ด ์กฐํ•ฉ์—์„œ ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” ๋ฆฌ์ŠคํŠธ ๋ง๊ณ , ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ž!

 

 

 

 

 

์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
 
public class Solution {
    static List<Integer> list_g;
    static List<Integer> list_i;
    static int[] arr_i;
    static boolean[] visited;
    static int win, lose;
 
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         
        int T = Integer.parseInt(br.readLine());
 
        for(int tc = 1; tc <= T; tc++) {
            list_g = new ArrayList<>(); //๊ทœ์˜์ด ์นด๋“œ
            list_i = new ArrayList<>(); //์ธ์˜์ด ์นด๋“œ
            arr_i = new int[9]; //์ธ์˜์ด ์นด๋“œ ์ˆœ์—ด
             
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            for(int i = 0; i < 9; i++) { //๊ทœ์˜์ด ์นด๋“œ
                int num = Integer.parseInt(st.nextToken());
                list_g.add(num);
            }
             
            for(int i = 1; i <= 18; i++) {
                if(!list_g.contains(i)) {
                    list_i.add(i);
                }
            }
         
            visited = new boolean[9];
            win = 0;
            lose = 0;
             
            permutation(0);
             
            System.out.println("#" + tc + " " + win + " " + lose);
        }
    }
 
    public static void permutation(int count) {
        if(count == 9) {
            //๊ฒŒ์ž„ ์ง„ํ–‰
            int score_g = 0;
            int score_i = 0;
                     
            for(int i = 0; i < 9; i++) {
                if(list_g.get(i) > arr_i[i]) {
                    score_g += list_g.get(i) + arr_i[i];
                }else if(list_g.get(i) < arr_i[i]) {
                    score_i += list_g.get(i) + arr_i[i];
                }
            }
             
            if(score_g > score_i) {
                win++;
            }else if(score_g < score_i) {
                lose++;
            }
             
            return;
        }
         
        for(int i = 0; i < 9; i++) {
            if(visited[i]) continue;
            visited[i] = true;
             
            int num = list_i.get(i);
            arr_i[count] = num;
            permutation(count + 1);
            visited[i] = false;
        }
         
    }
 
}