문제 : https://www.acmicpc.net/problem/2503
문제 유형 : 브루트포스
풀이 방식 : 3중 for 문으로 모든 경우의 수 민혁이가 질문한 세 자리 수와 볼 카운트 비교
소스코드
package BOJ;
import java.io.*;
import java.util.*;
public class BOJ_2503_숫자야구_Main {
public static void main(String[] args) throws NumberFormatException, IOException {
// 1. 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] MH = new String[N]; //민혁이가 질문한 세 자리 수
int[][] MH_info = new int[N][2]; //민혁이가 질문한 세 자리수에대한 정보 [0]:스트라이크 [1]:볼
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
MH[i] = st.nextToken();
MH_info[i][0] = Integer.parseInt(st.nextToken());
MH_info[i][1] = Integer.parseInt(st.nextToken());
}
// 2. 연산 브루트포스
int ans = 0;
for (int i = 1; i <= 9; i++) { // 첫째자리
for (int j = 1; j <= 9; j++) { // 둘째자리
if(i!=j) {
for (int k = 1; k <= 9; k++) { // 셋째자리
if(k!=i&&k!=j) {
boolean flag = true;
for (int s = 0; s < N; s++) { // 민혁이가 질문한 수
int strike = 0;
int ball = 0;
String str = MH[s];
if(str.charAt(0)-'0'==i) strike++;
if(str.charAt(1)-'0'==j) strike++;
if(str.charAt(2)-'0'==k) strike++;
if(str.charAt(0)-'0'==j||str.charAt(0)-'0'==k) ball++;
if(str.charAt(1)-'0'==i||str.charAt(1)-'0'==k) ball++;
if(str.charAt(2)-'0'==i||str.charAt(2)-'0'==j) ball++;
if(MH_info[s][0]!=strike||MH_info[s][1]!=ball) {
flag = false;
break;
}
}
if(flag) ans++;
}
}
}
}
}
System.out.println(ans);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_1713_후보추천하기 (0) | 2020.08.07 |
---|---|
[JAVA]백준_9663_NQueen (4) | 2020.08.06 |
[JAVA]백준_3187_양치기꿍 (0) | 2020.08.05 |
[JAVA]백준_11967_불켜기 (0) | 2020.08.04 |
[JAVA]백준_1347_미로만들기 (0) | 2020.08.04 |