Lv.0 주사위 게임2

2023. 12. 7. 00:31코딩 테스트/프로그래머스

✏️ 문제 

https://school.programmers.co.kr/learn/courses/30/lessons/181930

 

Python 

1. set을 이용하여 중복된 요소를 제거하는 방법 

def solution(a, b, c):
    answer = 0
    # set을 적용하여 중복된 요소 제거
    list_len = len(set[a,b,c])
    print(list_len)

    if list_len == 3 :
        # 값이 모두 다른 경우
        answer = a + b + c
    elif list_len == 2 :
        # 두 숫자가 같은 경우
        # (a + b + c) × (a2 + b2 + c2 )
        answer =  (a + b + c) * (a ** 2 + b ** 2 + c ** 2)
    elif list_len == 1 :
        # (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3)
        answer = (a + b + c) * (a ** 2 + b ** 2 + c ** 2) * (a ** 3 + b ** 3 + c ** 3)
    return answer

 

2. 조건문으로 체크하는 방법

def solution(a, b, c):
    answer = 0
    if a == b and b == c:
        # (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )
        answer = (a + b + c) * (a ** 2 + b ** 2 + c ** 2) * (a ** 3 + b ** 3 + c ** 3)
    elif a == b or b == c or c == a:
        # (a + b + c) × (a2 + b2 + c2 ) 
        answer = (a + b + c) * (a ** 2 + b ** 2 + c ** 2)
    else:
        answer = a + b + c

    return answer

 

Java

class Solution {
    public int solution(int a, int b, int c) {
        double answer = 0;
        if (a == b && b == c) {
            // 세 숫자가 모두 같음
            // (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )
            answer = (a + b + c) * (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2)) * (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3));
        } else if (a == b || b == c || c == a) {
            // 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다름
            // (a + b + c) × (a2 + b2 + c2 )
            answer = (a + b + c) * (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2));
        } else {
            answer = a + b + c;
        }

        return (int) answer;
    }
}

 

다른 사람의 문제 풀이

pow 클래스를 오버라이딩하다니..

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