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 이미지는
모두 직접 제작했습니다
'[ Computer Science ] > Algorithm_C++' 카테고리의 다른 글
[백준/C++/Greedy] 11047 동전 0 (0) | 2024.08.19 |
---|---|
[백준/C++/Graph] 16928 뱀과 사다리 게임 (0) | 2024.07.28 |
[백준/C++/DP] 1463 1로 만들기 (0) | 2024.06.28 |
[프로그래머스/C++] 연속된 수의 합 (0) | 2024.02.04 |
[프로그래머스/C++] 최빈값 구하기 (0) | 2024.02.04 |
[프로그래머스/C++] 저주의 숫자 3 (0) | 2024.02.04 |
[프로그래머스/C++] 유한소수 판별하기 (1) | 2024.02.04 |