Practice/Programmers
[프로그래머스/Programmers] 코딩 기초 트레이닝 > 주사위 게임3 (자바 Java)
공부하곰
2024. 8. 20. 13:22
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 제출
import java.util.HashSet;
import java.util.Set;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
class Solution {
public int solution(int a, int b, int c, int d) {
int answer = 0;
List<Integer> dice = Arrays.asList(a, b, c, d);
Collections.sort(dice);
Set<Integer> dice_set = new HashSet<>();
Collections.addAll(dice_set, a, b, c, d);
int setSize = dice_set.size();
List<Integer> dice_list = new ArrayList<>(dice_set);
// Collections.sort(dice_list);
if(setSize == 1){answer = 1111 * a;}
else{
int d1 = dice_list.get(0);
int d2 = dice_list.get(1);
int d1_cnt = Collections.frequency(dice, d1);
int d2_cnt = Collections.frequency(dice, d2);
// System.out.printf("d1 id %d, d1_cnt is %d\n", d1, d1_cnt);
// System.out.printf("d2 id %d, d2_cnt is %d\n", d2, d2_cnt);
if(setSize == 2){
int gap = Math.max(d1, d2) - Math.min(d1, d2);
switch(d1_cnt){
case 1 :
answer = (int) Math.pow((10 * d2 + d1), 2);
break;
case 2:// 두 개 - 두 개씩 같음
answer = (d1 + d2) * gap;
break;
case 3:
answer = (int) Math.pow((10 * d1 + d2), 2);
break;
}
}
else if(setSize == 3){
int d3 = dice_list.get(2);
// a, b 같고 c, d 각자
if (d1_cnt == 2){
answer = d2 * d3;
} else if(d2_cnt == 2){
answer = d1 * d3;
} else{
answer = d1 * d2;
}
}
else{answer = d1;}
}
return answer;
}
}
참고
정렬 : https://80000coding.oopy.io/21cb57a3-681b-404d-a4ac-8ab0e7289bc0
[JAVA] Sort 사용 (Arrays, Collections)
Java’s Sort
80000coding.oopy.io
거듭제곱 : https://coding-factory.tistory.com/531
[Java] 자바 거듭 제곱 구하기 Math.pow()
자바에서 특정값의 제곱을 구하려면 java.lang.Math 클래스의 pow()메소드를 사용하면 됩니다. java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있습니다. Math 클래스가 제공하는
coding-factory.tistory.com
집합 : https://blog.naver.com/heartflow89/220994601249
[JAVA/자바] Set - HashSet, TreeSet, LinkedHashSet
이전에 알아본 List(ArrayList, Vector, LinkedList) 컬렉션과는 다른 특징들을 갖는 Set 컬...
blog.naver.com
728x90
반응형