728x90
---문제---
문제 설명
숫자 야구 게임이란 2명이 서로가 생각한 숫자를 맞추는 게임입니다.
각자 서로 다른 1~9까지 3자리 임의의 숫자를 정한 뒤 서로에게 3자리의 숫자를 불러서 결과를 확인합니다. 그리고 그 결과를 토대로 상대가 정한 숫자를 예상한 뒤 맞힙니다.
* 숫자는 맞지만, 위치가 틀렸을 때는 볼
* 숫자와 위치가 모두 맞을 때는 스트라이크
* 숫자와 위치가 모두 틀렸을 때는 아웃
제한사항
질문의 수는 1 이상 100 이하의 자연수입니다.
baseball의 각 행은 [세 자리의 수, 스트라이크의 수, 볼의 수] 를 담고 있습니다.
---코드---
public class Dfs_3 {
public static void main(String[] args) {
int[][] baseball = {{123,1,1},
{356,1,0},
{327,2,0},
{489,0,1}};
String a, b;
int answer = 0 ;
for(int i=123; i<987; ++i) {
boolean check = false;
a = Integer.toString(i);
if(i/100==0||a.charAt(1)=='0'||a.charAt(2)=='0') {
continue;
}
if(a.charAt(0)==a.charAt(1) || a.charAt(0)==a.charAt(2) || a.charAt(1)==a.charAt(2)) {
continue;
}
for(int j=0; j<baseball.length; ++j) {
int strike =0 ;
int ball = 0;
if(baseball[j][1]==3) {
System.out.println(1);
return;
}
b= Integer.toString(baseball[j][0]);
for(int f =0; f<3; ++f) {
for(int s =0; s<3; ++s) {
char tmp1 = a.charAt(f);
char tmp2 = b.charAt(s);
if(f==s) {
if(tmp1==tmp2) {
++strike;
}
}else {
if(tmp1==tmp2) {
++ball;
}
}
}
}
if(strike!=baseball[j][1] || ball!=baseball[j][2]) {
check = true;
break;
}
}
if(!check) {
++answer;
}
}
System.out.println(answer);
}
}
---출처---
https://programmers.co.kr/learn/courses/30/lessons/42841
반응형
'Algorithms > Programmers' 카테고리의 다른 글
[Java] Progrmmers 코딩테스트 연습 : 카펫 (DFS/BFS) (0) | 2020.02.21 |
---|---|
[Java] Progrmmers 코딩테스트 연습 : 카펫 (완전탐색) (0) | 2020.02.21 |
[Java] Progrmmers 코딩테스트 연습 : 소수찾기 (완전탐색) (0) | 2020.02.03 |
[Java] Progrmmers 코딩테스트 연습 : 라면공장 (Heap) (0) | 2020.01.28 |
[Java] Progrmmers 코딩테스트 연습 : 더 맵게 (Heap) (0) | 2020.01.28 |