본문 바로가기
coding test/Java

프로그래머스 ) lv.0 ) Java ) 주사위 게임 2

by heidish 2023. 6. 22.
반응형

 

 

 

 

 

 

 

SOL )

class Solution {
    public int solution(int a, int b, int c) {
        // a = b = c
        if (a == b && b == c && c == a) {
            return (a*3) * ((int)(Math.pow(a, 2)) * 3) * ((int)(Math.pow(a, 3)) * 3);
        } else if (a != b && b != c && c != a) { // a != b != c
            return a + b + c;
        } else {
            return (a + b + c) * (int)((Math.pow(a, 2)) + (Math.pow(b, 2)) + (Math.pow(c, 2)));
        }
    }
}

if문으로 위에서부터 조건을 나눠주었다.

  • 세 숫자가 같은경우
  • 세 숫자가 모두 다른경우
  • 위 두가지 경우가 아닌, 세 숫자 중 어느 두 숫자만 같고 나머지 하나의 숫자는 다른경우

다른건 딱히 눈여겨볼만한게 없는 것 같고,

제곱 함수인 Math.pow() 를 활용하는 것과 이 함수를 활용했을때 그 결과값이 double 이므로

위와 같이 곱셈을 위해서는 이 실수형을 정수형으로 변환해줘야 하는 부분이었다.

이 부분은 앞에 (int) 를 붙여 해결해주었다.

 

 

 

 

OTHER SOL )

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);
    }
}

위 풀이와 같이 풀 수도 있구나 생각하게된 풀이..!

사실 이 풀이는 좀 어려웠다.

그래서 다른 풀이도 보다가 찾은 훨씬 쉽고 짧은 풀이가 아래 풀이이다.

function solution(a, b, c) {
    if(a === b && b === c && a === c) return (a + b + c) * (a**2 + b**2 + c**2 ) * (a**3 + b**3 + c**3)
    if(a === b || b === c || a=== c) return (a + b + c) * (a**2 + b**2 + c**2)
    return a+b+c
}

 

 

 

반응형

댓글