#include <string> #include <vector> #include <iostream> using namespace std; int num[3]; int result[3]; int visited[10]; int answer; vector<vector<int>> copy_baseball; int strike() { int strikeCnt = 0; for(int i = 0; i < 3; i++) { if(result[i] == num[i]) { strikeCnt++; } } return strikeCnt; } int ball() { int ballCnt = 0; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { if(i == j) { continue; } if(result[i] == num[j]) { ballCnt++; } } } return ballCnt; } void DFS(int cnt) { if(cnt == 3) { for(int i = 0; i < copy_baseball.size(); i++) { // 자리수별로 num에 저장 int temp = copy_baseball[i][0]; for(int j = 2; j >= 0; j--) { num[j] = temp % 10; temp /= 10; } // 스트라이크 if(strike() != copy_baseball[i][1]) { return; } // 볼 if(ball() != copy_baseball[i][2]) { return; } } answer++; return; } for(int i = 1; i <= 9; i++) { if(visited[i] == 0) { visited[i] = 1; result[cnt] = i; DFS(cnt+1); visited[i] = 0; } } } int solution(vector<vector<int>> baseball) { copy_baseball = baseball; DFS(0); return answer; } | cs |
'Programmers > Level 2' 카테고리의 다른 글
[프로그래머스 2] 카펫 (C/C++) (0) | 2019.10.23 |
---|---|
[프로그래머스 2] 구명 보트 (C/C++) (★) (0) | 2019.10.23 |
[프로그래머스 2] 더 맵게 (C/C++) (0) | 2019.10.22 |
[프로그래머스 2] 가장 큰 수 (C/C++) (★★★) (0) | 2019.10.22 |
[프로그래머스 2] 소수 찾기 (C/C++) (0) | 2019.10.22 |