๊ฐ๋ฅํ ๋ชจ๋ ์ซ์๋ฅผ ๊ตฌํ๊ณ , ์์๊ฐ ์ง๋ฌธํ ์ซ์๋ค๊ณผ ๋น๊ตํด 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);
}
}
}