
import java.util.Scanner;
public class Main {
static int N,M,strCnt=0,balCnt=0,max=0;
static int[] Nary;
static int[] strike;
static int[] ball;
static boolean[] visited;
public static void input() {
Scanner scan = new Scanner(System.in);
N = scan.nextInt();
Nary = new int[N];
strike = new int[N];
ball = new int[N];
visited = new boolean[10];
for(int i = 0 ; i < N ; i++) {
Nary[i] = scan.nextInt();
strike[i] = scan.nextInt();
ball[i] = scan.nextInt();
}
start();
}
private static void start() {
for(int i = 111 ; i <=999; i++) {
if(String.valueOf(i).contains("0")) continue; //for반복중 0 이 있으면 넘기기
if(chk(i)) continue; //i값에 중복 숫자가 있다면 넘기기
int count = 0;
for(int j = 0 ; j < N ;j++) {
strCnt = 0;
balCnt = 0;
for(int z = 0 ; z < 3 ; z++){ //숫자 야구 로직 시작
if(String.valueOf(Nary[j]).charAt(z) == String.valueOf(i).charAt(z)){ //같은 자리면 스트라이크 증가
strCnt++;
}
if(String.valueOf(Nary[j]).contains(String.valueOf(String.valueOf(i).charAt(z))) && String.valueOf(Nary[j]).charAt(z) != String.valueOf(i).charAt(z)) { //같은 자리는 아니지만 값이 있다면 볼 증가
balCnt++;
}
}
if(strCnt==strike[j] && balCnt==ball[j]) {
count++;
}
}
if(count == N){
max++;
}
}
System.out.println(max);
}
private static boolean chk(int i) {
if(String.valueOf(i).charAt(0)!=String.valueOf(i).charAt(1) && String.valueOf(i).charAt(1)!=String.valueOf(i).charAt(2)&& String.valueOf(i).charAt(0)!=String.valueOf(i).charAt(2)){
return false;
}
return true;
}
public static void main(String[] args) {
input();
}
}
주의할 점:
1.111~999 반복을 할때 0일때 체크 하기
2.111~999 반복을 할때 중복 값이 있을 경우 체크 하기
그 후로는 완전 탐색을 이용했다.
'알고리즘' 카테고리의 다른 글
| 백준 - 17836 공주님을 구해라! 자바 (3) | 2025.07.15 |
|---|---|
| 백준 - 17396 백도어 (1) | 2025.07.15 |
| 유클리드 호제법 (0) | 2025.07.15 |
| 백준 - 10845 큐 (0) | 2025.07.15 |
| 서버실 17245 자바 (0) | 2025.04.06 |