728x90
문제설명
내 코드
def solution(a, b, c):
answer = 0
if a == b == c:
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:
answer = (a+b+c) * (a**2+b**2+c**2)
else:
answer = a+b+c
return answer
처음에는 은근 조건이 복잡할 것 같아 비트 연산으로 풀면 되지 않을까라는 생각으로 풀어봤지만,, 생각보다 잘 되지 않아서 포기했다. 그래서 다시 조건문을 통해 푸는 방법을 선택했는데 생각보다 쉽게 풀렸다! 간단하게 생각해봐야겠다.
근데 다른 사람의 풀이를 보니 새로운 풀이 방법을 봤다.
몰랐던 개념
def solution(a, b, c):
check=len(set([a,b,c]))
if check==1:
return 3*a*3*(a**2)*3*(a**3)
elif check==2:
return (a+b+c)*(a**2+b**2+c**2)
else:
return (a+b+c)
set 집합을 쓰는 방법을 다른 사람이 사용하였는데, 괜찮은 방법인 것 같다.
set은 set([들어갈 문자])을 통해 생성할 수 있는데, set의 특징 중 중요한 것이
"중복된 값은 자동으로 중복이 제거 된다는 것이다"
( + 순서를 무시해서 출력한다는 특징도 있다)
이러한 set의 성질을 이용해
중복 값이 모두 제거되어 길이가 0이면 a, b, c가 모두 같은 수라는 말이고,
중복이 1개만 제거되어 길이가 2면 a,b 혹은 a,c 혹은 b,c가 중복이라는 말,
중복이 2개가 제거되면 길이가 1이면 모든 숫자의 중복이 제거되어 숫자 한 개만 남았다는 의미가 된다!
끄읏-!
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 4 (0) | 2023.12.27 |
---|---|
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 2 (0) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 3 (0) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 수 조작하기 2 (1) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 조건 문자열 (1) | 2023.12.11 |