본문 바로가기

problem solving

[프로그래머스]숫자 야구

완전탐색 문제인 거 같다.

3자리수 전부를 주어진 baseball이랑 비교해서 4중 반복문을 구성했다.

3자리수 전부를 확인해보는데 각각의 수마다 baseball이랑 비교해 strike와 ball의 수를 구한다.

전부 strike와 ball 수가 동일하다면 가능한 답이므로 정답의 수를 하나 추가한다.

#include <string>
#include <vector>
 
using namespace std;
 
int solution(vector<vector<int>> baseball) {
    int answer = 0;
    
    for(int idx = 111; idx < 1000; idx++) {
        int div1 = idx / 100, div2 = (idx / 10) % 10, div3 = idx % 10;
        if(div1 == div2 || div1 == div3 || div2 == div3
            || div1 == 0 || div2 == 0 || div3 == 0)  { continue; }
        
        for(int i = 0; i < baseball.size(); i++) {
            int ball = 0, strike = 0;
            string val1 = to_string(idx);
            string val2 = to_string(baseball[i][0]);
            for(int j = 0; j < 3; j++) {
                for(int k = 0; k < 3; k++) {
                    if(val1[j] == val2[k]) {
                        if(j == k) {
                            strike++;
                        }
                        else {
                            ball++;
                        }
                    }
                }
            }
            if(baseball[i][1!= strike || baseball[i][2!= ball) {
                break;
            }
            if(i == baseball.size() - 1) {
                answer++;
            }
        }
    }
    
    return answer;
}
cs

'problem solving' 카테고리의 다른 글

[프로그래머스]구명보트  (0) 2020.03.11
[프로그래머스]괄호 변환  (0) 2020.03.10
[프로그래머스]전화번호 목록  (0) 2020.03.10
[프로그래머스]H-index  (0) 2020.03.10
[프로그래머스]더 맵게  (0) 2020.03.10