Coding-Test

[프로그래머스/Python] 주사위 게임 2

Kr1 2025. 2. 28. 18:26

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명

 

제한사항

  • a, b, c는 1이상 6이하의 정수입니다.

 

코드 1 (나의 코드)

def solution(a, b, c):
    if a != b and a != c and b != c:
        return a + b + c
    elif (a == b != c) or (a == c != b) or (b == c != a):
        return (a + b + c) * (a**2 + b**2 + c**2)
    elif a == b == c:
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)

 

코드 2 (GPT)

def solution(a, b, c):
    s1 = a + b + c
    s2 = a**2 + b**2 + c**2
    s3 = a**3 + b**3 + c**3

    if a == b == c:
        return s1 * s2 * s3  # 세 개가 모두 같을 때
    elif a == b or a == c or b == c:
        return s1 * s2  # 두 개만 같을 때
    else:
        return s1  # 모두 다를 때

 

 

+) 이번 문제를 풀면서 set()을 활용한 풀이가 신박해 보였는데,
GPT에게 물어보니 성능 면에서는 set()을 사용하는 것이 꼭 최선은 아닐 수도 있다는 답변을 받았다.

💡 GPT의 코멘트:
"set()을 활용하면 중복 제거를 간편하게 처리할 수 있어서 직관적이지만,
set()을 생성하는 과정에서 추가적인 연산과 메모리 사용이 발생할 수 있다.
단순한 if-elif 조건문을 활용하면 O(1) 비교 연산만 사용해서 더 빠르게 동작할 수 있고,
불필요한 중복 연산도 줄일 수 있어 성능이 향상된다."

 

👉 set()을 활용하는 아이디어는 분명 멋지고 가독성이 좋지만,
성능이 중요한 경우에는 불필요한 연산을 줄이는 것이 더 효율적일 수도 있다!