Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 2503] 숫자 야구 본문
반응형
문제
숫자야구 문제를 낼 수 있는 수의 범위가 123~987 사이의 865개이다.
865 * 최대 질문 횟수(100) * 각 자리수의 경우의 수(9) 를 해도 그리 크지 않으므로 이 역시 완전탐색으로 풀었다.
1. 123 부터 루프를 돌아 주어진 질문의 세자리 자연수와 비교하여 스트라이크, 볼 수가 일치할 경우만 체크한다.
2. 222, 353 등 같은 숫자가 2번 이상 올 경우는 예외처리 한다.
3. 마찬가지로 숫자 0도 예외처리 한다.
public static String[] base;
public static String[] s;
public static String[] b;
public static int cnt = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
base = new String[t];
s = new String[t];
b = new String[t];
for(int i=0; i<t; i++) {
base[i] = sc.next();
s[i] = sc.next();
b[i] = sc.next();
}
for(int i=123; i<=987; i++) {
check(String.valueOf(i));
}
System.out.println(cnt);
}
public static void check(String arr) {
char[] charArr = arr.toCharArray();
int eq = 0;
for(int i=0; i<base.length; i++) {
if(charArr[0] == charArr[1] || charArr[0] == charArr[2] || charArr[1] == charArr[2] ||
charArr[0] == '0' || charArr[1] == '0' || charArr[2] == '0')
continue;
int str = 0;
int bal = 0;
for(int j=0; j<3; j++) {
for(int k=0; k<3; k++) {
if(charArr[j] == base[i].charAt(k)) {
if(j == k) str++;
else bal++;
}
}
}
if(str == Integer.parseInt(s[i]) && bal == Integer.parseInt(b[i]))
eq++;
}
if(eq == base.length)
cnt++;
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 1018] 체스판 다시 칠하기 (0) | 2019.04.01 |
---|---|
[백준 1463] 1로 만들기 (0) | 2019.03.31 |
[백준 10448] 유레카 이론 (0) | 2019.03.29 |
[백준 3085] 사탕 게임 (0) | 2019.03.28 |
[백준 2309] 일곱 난쟁이 (0) | 2019.03.28 |
Comments