백준 2503번: 숫자 야구 [브루트포스][구현] - Java :: 매운코딩
728x90
300x250

https://www.acmicpc.net/problem/2503

 

2503번: 숫자 야구

첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Boj2503 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		System.setIn(new FileInputStream("Test.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());

		int N = Integer.parseInt(st.nextToken());

		int comp[][] = new int[N][3];

		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			comp[i][0] = Integer.parseInt(st.nextToken());
			comp[i][1] = Integer.parseInt(st.nextToken());
			comp[i][2] = Integer.parseInt(st.nextToken());
		}

		int res = 0;

		for (int i = 1; i < 10; i++) {
			for (int j = 1; j < 10; j++) {
				for (int k = 1; k < 10; k++) {
					if (i == j || j == k || i == k)
						continue;

					String std = "" + i + j + k;
					boolean flag = true;

					//// 조건을 만족하는지 체크
					for (int tc = 0; tc < N; tc++) {

						int cntS = 0;
						int cntB = 0;
						String compStr = String.valueOf(comp[tc][0]);

						// 자릿수 비교
						for (int l = 0; l < 3; l++) {
							if (std.charAt(l) == compStr.charAt(l)) {
								cntS++;
							} else if (std.contains(compStr.charAt(l) + "")) {
								cntB++;
							}
						}
						
						//검증
						if (cntS != comp[tc][1] || cntB != comp[tc][2]) {
							flag = false;
							break;
						}					
					}
					
					if (flag)
						res++;

					
				}
			}

		}

		System.out.println(res);

	}

}
728x90

+ Recent posts