[Java Algorithm] 프로그래머스 Lv.0 _ 주사위 게임 3

2025. 3. 13. 11:09·Algorithm Study

[문제]

1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.

네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.
주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.
네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.
네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 a, b, c, d로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

 

[Algorithm]

처음 생각한 방법은 stream을 사용해서 중복 제거 후, 남은 배열의 길이로 나눠서 결과 return 하는 것

🚨 문제점 : aaab / aabb 의 구분이 안 됨

➡️ 배열을 이용해서 같은 값이 몇 개인지 count하고 그에 알맞는 분기 처리로 결과 return

 

[Code]

import java.util.*;

class Solution {
    public int solution(int a, int b, int c, int d) {
        int[] count = new int[7];
        count[a]++;
        count[b]++;
        count[c]++;
        count[d]++;
        
        List<Integer> unique = new ArrayList<>();
        int p = 0, q = 0, r = 0;
        for (int i = 1; i <= 6; i++) {
            if (count[i] == 4) return 1111 * i; 
            if (count[i] == 3) p = i;           
            if (count[i] == 2) {
                if (p == 0) p = i;             
                else q = i;  
            }
            if (count[i] == 1) {
                 if (q == 0) q = i;
                else r = i;    
            }
        }

        if (p != 0 && count[p] == 3) {
            return (int) Math.pow(10 * p + q, 2);
        } else if (q != 0 && count[p] == 2 && count[q] == 2) { 
            return (p + q) * Math.abs(p - q);
        } else if (count[p] == 2) { 
            return q * r;
        } else {
            return Math.min(a, Math.min(b, Math.min(c, d)));
        }
    }
}

 

 

넘 복잡한 문제였음 ;;

 

 

 

저작자표시 변경금지 (새창열림)

'Algorithm Study' 카테고리의 다른 글

[Java Algorithm] 프로그래머스 Lv.0 _ 간단한 논리 연산  (1) 2025.03.05
[Java Algorithm] 프로그래머스 Lv.0 _ 배열 만들기 4  (0) 2025.02.25
[Java Algorithm] 프로그래머스 Lv.0 _ 콜라츠 수열 만들기  (0) 2025.02.25
[Java Algorithm] 프로그래머스 Lv.0 _ 수열과 구간 쿼리 2  (0) 2025.02.24
[Java Algorithm] 프로그래머스 Lv.0 _ 수열과 구간 쿼리 3  (1) 2025.02.24
'Algorithm Study' 카테고리의 다른 글
  • [Java Algorithm] 프로그래머스 Lv.0 _ 간단한 논리 연산
  • [Java Algorithm] 프로그래머스 Lv.0 _ 배열 만들기 4
  • [Java Algorithm] 프로그래머스 Lv.0 _ 콜라츠 수열 만들기
  • [Java Algorithm] 프로그래머스 Lv.0 _ 수열과 구간 쿼리 2
microsaurs
microsaurs
개발 스터디로그입니다. 공부한 내용을 정리해서 올립니다 ㅇ-ㅇ
  • microsaurs
    microsaurs.devlog
    microsaurs
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • Algorithm Study (39)
      • JAVA (8)
      • Swift (11)
      • Python (21)
      • CS (5)
      • React (3)
      • 리얼클래스 studylog (27)
      • 정보처리기사[실기] (23)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    study
    영어회화
    Python
    javaStudy
    정처기실기
    ios개발
    자바알고리즘
    리얼학습일기
    javaalgorithm
    ios프로그래밍
    더오피스
    나도코딩
    정보처리기사
    영어독학
    프로그래머스
    알고리즘
    SWIFT
    정보처리기사실기
    ios프로그래밍을위한스위프트기초
    The Office
    파이썬
    파이썬문법
    리얼클래스
    타일러영어
    정보처리기사프로그래밍언어
    Algorithm
    프로그래밍언어
    파이썬기초
    스위프트기초
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
microsaurs
[Java Algorithm] 프로그래머스 Lv.0 _ 주사위 게임 3
상단으로

티스토리툴바