• 문제 링크
2503번: 숫자 야구
첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
static Info[] arr;
static int cnt;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
arr = new Info[n];
while (n-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[n] = new Info(st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
generatePermutation(new StringBuilder(), new boolean[10]);
bw.write(String.valueOf(cnt));
bw.flush();
}
private static void generatePermutation(StringBuilder perm, boolean[] visit) {
if (perm.length() == 3) {
for (Info info : arr) {
if (!isCorrect(info, perm))
return;
}
cnt++;
return;
}
for (int i = 1; i < 10; i++) {
if (visit[i])
continue;
visit[i] = true;
perm.append(i);
generatePermutation(perm, visit);
perm.deleteCharAt(perm.length() - 1);
visit[i] = false;
}
}
private static boolean isCorrect(Info info, StringBuilder perm) {
int strike = 0, ball = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (info.guess.charAt(i) == perm.charAt(j)) {
if (i == j)
strike++;
else
ball++;
}
}
}
return info.strike == strike && info.ball == ball;
}
private static class Info {
String guess;
int strike, ball;
public Info(String guess, int strike, int ball) {
this.guess = guess;
this.strike = strike;
this.ball = ball;
}
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 2635 수 이어가기 - Brute Force / Java (0) | 2023.05.25 |
---|---|
[백준] 1145 적어도 대부분의 배수 - Brute Force / Java (0) | 2023.05.24 |
[백준] 8394 악수 - Dynamic Programming / Java (0) | 2023.05.22 |
[백준] 9764 서로 다른 자연수의 합 - Dynamic Programming / Java (0) | 2023.05.21 |
[백준] 25706 자전거 묘기 - Dynamic Programming / Java (0) | 2023.05.20 |
댓글