[알고리즘문제풀기] 주사위 게임 2

silver's avatar
Apr 04, 2025
[알고리즘문제풀기] 주사위 게임 2

문제

내가 작성한 정답

if

class Solution { public int solution(int a, int b, int c) { if(a==b&&b==c) return (a+b+c)*(a*a+b*b+c*c)*(a*a*a+b*b*b+c*c*c); else if(a!=b&&a!=c&&b!=c) return a+b+c; else return (a+b+c)*(a*a+b*b+c*c); } }

삼항연산자

class Solution { public int solution(int a, int b, int c) { if(a==b&&b==c) return (a+b+c)*(a*a+b*b+c*c)*(a*a*a+b*b*b+c*c*c); else if(a!=b&&a!=c&&b!=c) return a+b+c; else return (a+b+c)*(a*a+b*b+c*c); } }

다른 사람들의 정답

for

: 조건을 만족하면 지수의 count를 올린다.
class Solution { public int solution(int a, int b, int c) { int answer = 1; int count = 1; if(a == b || a == c || b == c) { count++; } if(a == b && b == c) { count++; } for(int i = 1; i <= count; i++) { answer *= (pow(a,i)+pow(b,i)+pow(c,i)); } return answer; } private int pow(int a, int b) { if(b == 0) return 1; return a * pow(a, b-1); } }

Set

import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; class Solution { public int solution(int a, int b, int c) { // a, b, c를 Stream으로 만들고, Set으로 변환하여 중복을 제거 // Set은 중복된 값을 허용하지 않으므로, a, b, c 중 서로 다른 숫자의 개수를 파악하는 데 사용된다. Set<Integer> numbers = Stream.of(a, b, c).collect(Collectors.toSet()); // numbers.size()는 서로 다른 숫자의 개수 return (a + b + c) * // a, b, c의 합은 항상 곱해집니다. (numbers.size() < 3 ? a * a + b * b + c * c : 1) * // 중복된 숫자가 있으면 a^2 + b^2 + c^2을 곱하고, 아니면 1을 곱한다. (numbers.size() < 2 ? a * a * a + b * b * b + c * c * c : 1); // 3개의 숫자가 모두 같으면 a^3 + b^3 + c^3을 곱하고, 아니면 1을 곱한다. } }
// Stream.of(a, b, c): a, b, c 세 정수를 요소로 갖는 스트림을 생성 // .collect(Collectors.toSet()): 스트림의 요소들을 Set 컬렉션으로 수집 // Set은 중복된 값을 허용하지 않으므로 numbers에는 a, b, c 중에서 서로 다른 값들만 저장된다 Set<Integer> numbers = Stream.of(a, b, c).collect(Collectors.toSet());
💡
.collect(Collectors.joining()) → 하나로 합치기
 
Share article

silver