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

이준영·2025년 12월 13일

저번에 시험 본거 유사 문제를 Gemini에게 추천 받아서 주말마다 풀고 있었는데, 2레벨 문제도 제대로 못 푸는데 3, 4 레벨 문제는 도저히 엄두가 안나서 주말 마다 푸는 연습 문제중에서 어렵다고 느꼈던 문제를 골라서 정리 하기로 했다.

8일차
  • 오늘은 8일차 문제를 풀었다.

주사위 게임3

문제 소개

문제 소개
  • a, b, c, d는 1~6의 수
  • 같은 수가 4개일 때, 1111 * p
  • 같은 수가 3개일 때, (10 * p + q) ^ 2
  • 같은 수가 2개 씩 같은 때, (p+q) * |p-q|
  • 같은 수가 2개일 때, q * r
  • 같은 수가 없을 때, 최소 값

나의 문제 풀이

  1. 같은 수의 개수를 int형 변수를 만들어서 세고
  2. p의 값은 같은 수의 개수를 셀때 저장
  3. q와 r의 값을 판다하는 방법이 문제였는데, 이는 List에 a, b, c, d를 저장하고 p값을 제거하는 방식으로 해결했다.
  4. 최소 값은 List의 Min값을 이용했다.
코드
  • 내 능력이 부족해서 코드가 조금 부족하게 나온 것 같다.

다른 사람 풀이

프로그래머스에서 좋은게 다른 사람의 풀이를 보면서 공부할 수 있다는게 좋았다.
오늘 푼 문제에서 인상 깊었던 풀이 두 가지를 해석해보았다.

다른 사람 풀이1
  • Linq 문법을 활용해서 가독성을 높인 풀이이다.
  • 성능은 조금 느리지만, c#의 장점을 잘 활용한 듯 하다.
  • 주사위 값을 Key, 값의 개수를 Value로 생각하는 Dictionary형태로 만들어서 코드를 작성하셨다.
  • 값의 개수 순으로 정렬이 되어서 p, q, r 값을 쉽게 만든게 인상 깊었다.
다른 사람 풀이2
  • 가장 잘 풀었다고 생각되는 풀이였다.
  • 주사위 수를 배열의 인덱스 번호로 활용하고 카운팅 하였다.
  • 하나의 반복문으로 주사위 수와 카운팅 처리를 쉽게 하였다.

소감

게임 쪽를 다루고 있다보니 C#를 사용하면서도 성능을 우선시하는 풀이가 인상 깊었다. 나도 저런 코드를 만들 수 있으면 좋겠다.

profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글