일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 멀티프로세서
- 병행성
- 다이나믹 프로그래밍
- I/O장치
- 그리디알고리즘
- 렌더링 파이프라인
- 동적계획법
- DirectX12
- 타입 객체
- 자료구조
- 영속성
- 락
- 운영체제
- DirectX 12
- 백준
- codility
- 그리디 알고리즘
- 병행성 관련 오류
- 다이나믹프로그래밍
- 쓰레드
- 멀티쓰레드
- 디자인패턴
- directx
- OS
- 알고리즘
- 프로그래머스
- 컨디션 변수
- Direct12
- 파일시스템 구현
- 스케줄링
Archives
- Today
- Total
기록공간
숫자 야구 (프로그래머스) 본문
반응형
우선 두 가지 조건이 존재한다는 것을 간접적으로 알려주고 있다.
-
답은 0이 포함되지 않는다. (1~9까지 숫자)
-
답은 서로 중복되는 숫자를 가질 수 없다. (서로 다른 임의의 숫자)
해결 방법은 다음과 같다.
-
입력되는 값은 서로 다른 숫자이므로 이를 만족하는 최솟값 123부터 최댓값 987까지 숫자를 문자열 n으로 바꾼다.
(n 문자열은 야구 게임의 정답 후보이다)
-
만약 n 문자열에 0이 포함되어 있거나 서로 중복되는 경우 위 조건을 만족하지 않은 정답 후보이므로 다음 값으로 넘어간다.
-
질문을 검사하며 n과 대조해본다. 만약 서로 같은 위치에 같은 문자열이 있다면 스트라이크 값을 증가시킨다. 위치는 다르지만 같은 문자열이 존재하는 경우 볼 값을 증가 시킨다.
-
3의 작업을 모두 마치고 질문에서 주어진 스트라이크 값과 볼 값이 같다면 n은 질문 값을 만족한다. 만약 같지 않다면 n은 질문값을 만족하지 않으므로 다음 정답 후보로 넘어간다.
-
모든 질문에 대해서 4의 작업을 만족한다면 n은 올바른 정답 후보로 카운트 롤 하나 증가시킨다.
코드는 다음과 같다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> baseball)
{
int answer = 0;
// 모든 정답 후보를 검사한다.
for(int i = 123; i <= 987; ++i)
{
// 문자열로 변경한다.
string num = to_string(i);
// 조건을 만족하지 않는 정답 후보는 검사하지 않는다.
if(num[0] == num[1] || num[1] == num[2] || num[2] == num[0]) continue;
if(num[0] == '0' || num[1] == '0' || num[2] == '0') continue;
bool check = true;
// 모든 질문들을 검사한다.
for(auto info : baseball)
{
string cmpNum = to_string(info[0]);
int strike = 0, ball = 0;
// 모든 문자를 비교하며
for(int j = 0; j < 3; ++j)
{
// 스트라이크, 볼 값을 기록한다.
if(cmpNum[j] == num[j]) ++strike;
if(cmpNum[j] == num[(j + 1) % 3] || cmpNum[j] == num[(j + 2) % 3]) ++ball;
}
// 질문의 정보와 다르다면 정답 후보를 만족하지 않으므로
// 다음 정답 후보로 넘어간다.
if(strike != info[1] || ball != info[2])
{
check = false;
break;
}
}
// 만약 모든 질문의 조건을 만족한다면 정답 후보이므로
// 갯수를 증가시킨다.
if(check) ++answer;
}
return answer;
}
반응형
'Algorithm > 문제' 카테고리의 다른 글
카펫 (프로그래머스) (0) | 2020.06.12 |
---|---|
가장 큰 정사각형 찾기 (프로그래머스) (0) | 2020.06.10 |
프린터 (프로그래머스) (0) | 2020.06.05 |
주식가격 (프로그래머스) (0) | 2020.06.05 |
더 맵게 (프로그래머스) (0) | 2020.06.05 |
Comments