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()을 활용하는 아이디어는 분명 멋지고 가독성이 좋지만,
성능이 중요한 경우에는 불필요한 연산을 줄이는 것이 더 효율적일 수도 있다!
'Coding-Test' 카테고리의 다른 글
[프로그래머스/Python] 코드 처리하기 (0) | 2025.02.28 |
---|---|
[프로그래머스/Python] 홀짝에 따라 다른 값 반환하기 (0) | 2025.01.21 |
[프로그래머스/Python] n의 배수 (1) | 2025.01.20 |
[프로그래머스/Python] 문자열 돌리기 (0) | 2024.05.03 |