https://programmers.co.kr/learn/courses/30/lessons/42841
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 풀이]
완전탐색을 이용하여 문제를 풀었습니다.
1~9로 나올 수 있는 세 자리 수 조합 123 ~ 987을 입력으로 들어오는 baseball 벡터의 크기만큼 반복을 하며 추정값을 찾았습니다. 123 ~ 987수를 확인할 때 0이 들어가거나 같은 수가 반복되면 continue 하였고 벡터만큼 반복을 할 때에는 확인하고자 하는 값이 주어진 입력의 스트라이크와 볼 값과 모두 같은지 확인한 후 같으면 값을 증가시켜 주었습니다.
[코드]
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> baseball) {
int answer = 0;
int strike, ball;
string s1 = "";
string s2 = "";
for (int idx = 123; idx <= 987; idx++) {
bool check = true;
s1 = to_string(idx);
if (s1[0] == '0' || s1[1] == '0' || s1[2] == '0')
continue;
if (s1[0] == s1[1] || s1[0] == s1[2] || s1[1] == s1[2])
continue;
for (int jdx = 0; jdx < baseball.size(); jdx++) {
strike = 0, ball = 0;
s2 = to_string(baseball[jdx][0]);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == j && s1[i] == s2[j]) {
strike++;
continue;
}
if (i != j && s1[i] == s2[j]) {
ball++;
continue;
}
}
}
if (strike != baseball[jdx][1] || ball != baseball[jdx][2]) {
check = false;
break;
}
}
if (check)
answer++;
}
return answer;
}
'algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스_문자열 압축(C++) (0) | 2020.06.04 |
---|---|
프로그래머스_카펫(C++, JAVA) (0) | 2020.04.28 |
프로그래머스_등굣길(C++, JAVA) (0) | 2020.04.26 |
프로그래머스_N으로 표현(C++) (0) | 2020.04.20 |
프로그래머스_모의고사(C++, JAVA) (0) | 2020.04.17 |