※ 핵심 아이디어 : 주사위의 굴릴때의 결과값을 1~6까지의 배열 내에서 카운팅 한다. 그후 카운팅 횟수 비교 처리
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(int a, int b, int c, int d) {
if(a==b && b==c && c==d) return 1111*a;
int dice[7] = {0};
int p = 0;
//주사위 굴림.
dice[a]++;
dice[b]++;
dice[c]++;
dice[d]++;
// 세 주사위 숫자가 같은 경우
for (int i = 1; i<=6; i++){
if (dice[i]==3){ //세주사위가 같은 p를 찾았으면
for (int j =1; j<=6; j++){ //q를 찾아야함.
if(dice[j] == 1 && j!=i ){
return (10*i +j)*(10*i +j);
} // i와 j는 주사위 눈금 값을 의미한다.
}
}
}
//주사위 두개씩 같은 값이 나오는 경우
for (int i = 1; i<=6; i++){
if (dice[i]==2){
for (int j = 1; j <=6; j++ ){
if (dice[j] == 2 && j!=i){
return (i+j) * abs(i-j);
}
}
}
}
//주사위 두개는 같고 하나 하나는 다른 경우
for (int i = 1; i <= 6; i++) {
if (dice[i] == 2) {
int q = 0, r = 0;
for (int j = 1; j <= 6; j++) {
if (dice[j] == 1 && j != i) {
if (q == 0) {
q = j;
} else {
r = j;
break;
}
}
}
return q * r;
}
}
//위의 조건이 아니라면 네 주사위에 적힌 숫자가 모두 다르다는 것.
return min({a,b,c,d});
}
'대외교육 > 코딩테스트' 카테고리의 다른 글
[프로그래머스][C++][코딩기초트레이닝] (자리수 나머지 판정으로) 배열만들기2 (1) | 2023.10.05 |
---|---|
[프로그래머스][C++][코딩기초트레이닝] 문자열 여러번 뒤집기 (0) | 2023.10.03 |
[C++] vector 주요 멤버함수 (0) | 2023.10.02 |
[프로그래머스][C++ 코딩기초트레이닝]DAY3~DAY4 (0) | 2023.10.01 |
[프로그래머스][C++ 코딩기초트레이닝] DAY 1 ~ DAY 2 (0) | 2023.10.01 |