-
[프로그래머스] Lv.2 숫자 야구(완전 탐색)Algorithm/대회 및 기타 2019. 10. 11. 23:21
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42841
문제 설명
숫자 야구 게임이란 2명이 서로가 생각한 숫자를 맞추는 게임입니다.
각자 서로 다른 1~9까지 3자리 임의의 숫자를 정한 뒤 서로에게 3자리의 숫자를 불러서 결과를 확인합니다. 그리고 그 결과를 토대로 상대가 정한 숫자를 예상한 뒤 맞힙니다.
* 숫자는 맞지만, 위치가 틀렸을 때는 볼 * 숫자와 위치가 모두 맞을 때는 스트라이크 * 숫자와 위치가 모두 틀렸을 때는 아웃
예를 들어, 아래의 경우가 있으면
A : 123
B : 1스트라이크 1볼.
A : 356
B : 1스트라이크 0볼.
A : 327
B : 2스트라이크 0볼.
A : 489
B : 0스트라이크 1볼.
이때 가능한 답은 324와 328 두 가지입니다.
질문한 세 자리의 수, 스트라이크의 수, 볼의 수를 담은 2차원 배열 baseball이 매개변수로 주어질 때, 가능한 답의 개수를 return 하도록 solution 함수를 작성해주세요.
제한사항
- 질문의 수는 1 이상 100 이하의 자연수입니다.
- baseball의 각 행은 [세 자리의 수, 스트라이크의 수, 볼의 수] 를 담고 있습니다.
입출력 예
[[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] 2 입출력 예 설명
문제에 나온 예와 같습니다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <string>#include <vector>using namespace std;int solution(vector<vector<int>> baseball) {int answer = 0;int strike = 0;int ball = 0;int flag = true;string num1 = "";string num2 = "";for (int i = 123; i <= 987; i++) {num1 = to_string(i);if (num1[0] == num1[1] || num1[0] == num1[2] || num1[1] == num1[2])continue;else if (num1[0] == '0' || num1[1] == '0' || num1[2] == '0')continue;flag = true;for (int j = 0; j < baseball.size(); j++) {strike = 0;ball = 0;for (int a = 0; a < 3; a++) {for (int b = 0; b < 3; b++) {num2 =to_string(baseball[j][0]);if (a == b&&num1[a] == num2[b]){strike++;continue;}if (a != b&&num1[a] == num2[b]) {ball++;continue;}}}if (strike != baseball[j][1] || ball != baseball[j][2]) {flag = false;break;}}if (flag == true) {answer++;}}return answer;}'Algorithm > 대회 및 기타' 카테고리의 다른 글
[프로그래머스] Lv.2 타겟 넘버(DFS) (0) 2019.10.11 [프로그래머스] Lv.2 카펫(완전탐색) (0) 2019.10.11 [프로그래머스] Lv.2 소수찾기(완전탐색) (0) 2019.10.11 [2018 상반기 카카오 블라인드 채용 1차] 프로그래머스 카카오 뉴스 클러스터링(난이도 중) (0) 2018.09.20 [2018 상반기 카카오 블라인드 채용 1차] 프로그래머스 카카오 프렌즈4블록(난이도 상) (0) 2018.09.19