본문 바로가기
[ Computer Science ]/Algorithm_C++

[프로그래머스/C++] 주사위 게임 3

by dev charlotte 2024. 2. 4.

0. 문제

풀이한 문제 - 주사위 게임 3 (프로그래머스 / Lv.0 / 60%)

https://school.programmers.co.kr/learn/courses/30/lessons/181916

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 테스트 케이스 분석

주사위를 네 개 굴렸을 때 나오는 숫자가 주어지고

네 숫자 중 같은 숫자가 몇번 등장하는지에 따라

계산방법이 달라지는 문제다

 

각 경우를 보기 좋게 정리해보면

크게는 총 다섯 가지의 점수 계산법이 있고

정렬된 배열이라고 가정했을 때

세부적으로는 9가지의 경우의 수가 있다

 

2. 코드 및 풀이

정렬을 위해 algorithm 라이브러리의 sort 함수를 사용했고

이후 과정에서 제곱 연산이 필요하기 때문에

cmath 라이브러리를 추가로 include 해줬다

 

입력 받은 네 개의 숫자로 일단 배열을 선언하고

그 배열을 sort 함수로 정렬해주었다

 

첫번째, 모든 숫자가 같으려면

정렬된 배열에서 a와 d가 같으면 모든 숫자가 같은 것이므로 

0번과 3번 인덱스를 비교해서 계산한다

 

2번은 세 숫자가 같은 경우이다

정렬된 배열에서 세 숫자가 같으려면

abc / bcd 가 같아야 하므로

각각 d 또는 a가 다른 숫자가 됨을 고려하여 계산한다

이때 제곱 연산이 필요하기 때문에

e 변수에 밑 연산 결과를 저장하고

cmath 라이브러리의 pow 함수를 이용해 제곱 연산을 수행했다

 

3번 경우는 두 개씩 같은 경우로

정렬된 배열에서는 ab , cd 끼리 같아야한다

이때 ab와 cd 값은 서로 다르다는 것까지 포함하여

조건을 작성해야한다

 

4번은 두 개는 같고 나머지 두 개는 서로 다른 경우다

ab , bc , cd 가 같은 경우로 나누고

나머지 두 개는 다르다는 조건을 포함하여 조건문을 작성한다

 

5번은 모두 다르다고 조건을 작성하면 된다

 

 

해당 게시글에 사용된 PPT 이미지는 

모두 직접 제작했습니다