-
[문제풀이 후기] 프로그래머스 #181930 - 주사위 게임 2문제풀이/Programmers 2025. 12. 22. 13:48
https://school.programmers.co.kr/learn/courses/30/lessons/181930
기본 상위 코드
const array = [a, b, c]; let result = 1;첫 번째 시도 (결과 : 성공)
접근 방식
1. reduce(), Math.pow() 활용해서 총합 미리 계산
2. 주사위 상태에 따라 총합 **const sum = a + b + c; // 1차 제곱의 합 const doubleSum = array.reduce((acc, value) => acc + Math.pow(value, 2), 0); // 2차 제곱의 합 const tripleSum = array.reduce((acc, value) => acc + Math.pow(value, 3), 0); // 3차 제곱의 합 // 모두 같을 때 if (a === b && b === c) { result = sum * doubleSum * tripleSum; } // 모두 다를 때 else if (a !== b && b !== c && c !== a) { result = sum; } // 2개만 같을 때 else { result = sum * doubleSum; } return result;문제점
주사위 개수가 늘어나면 조건 구하기가 더욱 어려움.
규칙
배열의 길이 - 중복값을 제거한 배열의 길이
- 0 : 1차 제곱의 합
- 1 : 1차 제곱의 합 + 2차 제곱의 합
- 2 : 1차 제곱의 합 + 2차 제곱의 합 + 3차 제곱의 합
...두 번째 시도 (결과 : 성공)
접근 방식
1. Set 을 사용하여 중복을 제거한 배열 반환
2. reduce() 와 Math.pow() 활용const arraySet = new Set(array); for (let i = 0; i <= array.length - arraySet.size; i++) { result *= array.reduce((acc, value) => acc + Math.pow(value, i + 1), 0); } return result;후기
확실히 문제를 풀면 풀 수록, 개선된 방법은 계속해서 등장한다.
어쩐지.. 조건식을 구하는게 찝찝하더라.'문제풀이 > Programmers' 카테고리의 다른 글
[문제풀이 후기] 프로그래머스 #181860 - 빈 배열에 추가, 삭제하기 (0) 2026.01.02 [문제풀이 후기] 프로그래머스 #181916 - 주사위 게임 3 (0) 2025.12.26 [문제풀이 후기] 프로그래머스 #181921 - 배열 만들기 2 (0) 2025.12.26 [문제풀이 후기] 프로그래머스 #181932 - 코드 처리하기 (0) 2025.12.21 [문제풀이 후기] 프로그래머스 #181935 - 홀짝에 따라 다른 값 반환하기 (0) 2025.12.21