[BOJ] 2503. ์ˆซ์ž ์•ผ๊ตฌ (๐Ÿฅˆ, ๋ธŒ๋ฃจํŠธํฌ์Šค/๊ตฌํ˜„)

lemythe423ยท2024๋…„ 1์›” 10์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
98/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๊ณ , ์˜์ˆ˜๊ฐ€ ์งˆ๋ฌธํ•œ ์ˆซ์ž๋“ค๊ณผ ๋น„๊ตํ•ด N ๊ฐœ์˜ ์งˆ๋ฌธ์„ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋Š” ์ˆซ์ž๋งŒ์ด ์ •๋‹ต์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ˆซ์ž๋“ค์ด๋‹ค.

3์ž๋ฆฌ์˜ ์ˆซ์ž๋Š” 1~9์˜ ์ˆซ์ž๋“ค๋กœ ์ด๋ค„์ ธ์žˆ์œผ๋ฉฐ ์ค‘๋ณต๋˜๋Š” ์ˆซ์ž๋Š” ์กด์žฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 987 = 504๊ฐœ์ด๋‹ค. permutation ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๊ตฌํ•œ๋‹ค.

์˜์ˆ˜๊ฐ€ ์งˆ๋ฌธํ•œ ์ˆซ์ž๋“ค๊ณผ ๋น„๊ตํ•˜๋Š” check ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ˆซ์ž๋“ค์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•œ N๊ฐœ์˜ ์ˆซ์ž๋“ค๊ณผ ๋น„๊ตํ•œ๋‹ค. ์ŠคํŠธ๋ผ์ดํฌ์™€ ๋ณผ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ์ด๋•Œ ๋ณผ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹จ์ˆœํžˆ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋กœ๋งŒ ๊ณ„์‚ฐํ•˜๋ฉด ์ŠคํŠธ๋ผ์ดํฌ์˜ ๊ฐœ์ˆ˜๋„ ์ค‘๋ณตํ•ด์„œ ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ•ด์ง„ ๋ณผ์˜ ๊ฐœ์ˆ˜์—์„œ ์ŠคํŠธ๋ผ์ดํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œ์™ธํ•ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๋„์ค‘์— ์ŠคํŠธ๋ผ์ดํฌ์™€ ๋ณผ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ •๋‹ต์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static int N;
    static String[] questNumbers;
    static int[][] questStrikeBall;
    static String[] permuArr = new String[9 * 8 * 7];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();

        questNumbers = new String[N];
        questStrikeBall = new int[N][2];
        for (int i = 0; i < N; i++) {
            questNumbers[i] = sc.next();
            questStrikeBall[i][0] = sc.nextInt();
            questStrikeBall[i][1] = sc.nextInt();
        }

        permutation();

        int answer = 0;
        for (String num : permuArr) {
            answer += check(num);
        }

        System.out.println(answer);
    }

    private static int check(String num) {
        for (int i = 0; i < N; i++) {
            int strike = 0;
            int ball = 0;
            String questNum = questNumbers[i]; // ์˜์ˆ˜๊ฐ€ ์งˆ๋ฌธํ•œ ์ˆซ์ž

            // ์ŠคํŠธ๋ผ์ดํฌ ์—ฌ๋ถ€ ๋น„๊ต
            for (int j = 0; j < 3; j++) {
                if (questNum.charAt(j) == num.charAt(j)) strike++;
            }

            // ๋ณผ ์—ฌ๋ถ€ ๋น„๊ต
            for (int j = 0; j < 3; j++) {
                if (questNum.contains(String.valueOf(num.charAt(j)))) ball++;
            }

            ball -= strike;
            if (questStrikeBall[i][0] != strike || questStrikeBall[i][1] != ball) return 0;
        }

        return 1;
    }

    private static void permutation() {
        StringBuilder sb = new StringBuilder();
        int idx = 0;
        for (int i = 1; i < 10; i++) {
            if (sb.indexOf(String.valueOf(i)) != -1) continue;
            sb.append(i);
            for (int j = 1; j < 10; j++) {
                if (sb.indexOf(String.valueOf(j)) != -1) continue;
                sb.append(j);
                for (int k = 1; k < 10; k++) {
                    if (sb.indexOf(String.valueOf(k)) != -1) continue;
                    sb.append(k);
                    permuArr[idx] = sb.toString();
                    idx++;
                    sb.deleteCharAt(2);
                }
                sb.deleteCharAt(1);
            }
            sb.deleteCharAt(0);
        }
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€