
풀이
def solution(a, b, c):
if a == b == c:
return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
elif a == b or b == c or a == c:
return (a + b + c) * (a**2 + b**2 + c**2)
else:
return a + b + c
조건식은 정확해야 함. 세 수가 모두 같거나 다를 경우를 제외한 경우를 else로 묶어버리면 너무 모호함.
다른 풀이 (set)
def solution(a, b, c):
check=len(set([a,b,c]))
if check==1:
return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
elif check==2:
return (a + b + c) * (a**2 + b**2 + c**2)
else:
return a + b + c
set은 중복된 값을 제거하고 고유한 값만 남길 때 사용한다.
중복된 값을 제거한 요소 모음의 길이가 1이면 세 숫자가 모두 같은 경우이다.
다른 풀이 (lamda)
solution = lambda a, b, c: a+b+c if a!=b and b!=c and c!=a else ((a+b+c)*(a**2+b**2+c**2)*(a**3+b**3+c**3) if a==b and b==c else (a+b+c)*(a**2+b**2+c**2))
lamda는 함수를 정의하는 키워드로 lambda 인수: 표현식 형식으로 인수는 함수에 전달되는 매개변수이고, 표현식은 함수의 반환 값을 나타낸다.
sum = lamda x, y, z : x + y + z
print(sum(1, 2, 3))
# 출력 : 6
lamda함수는 간단한 함수를 한 줄로 작성할 때 유용하다.
map()과 lamdamap(function, iterable, ...)
function: 시퀀스의 각 요소에 적용할 함수
iterable: 함수를 적용할 시퀀스(리스트, 튜플 등)
...: (선택적) 추가적인 iterable 인자들 / 여러 시퀀스에 동시에 함수를 적용할 때 사용
변수1, 변수2 = map(int, input().split())
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
print(a + b)
숫자 두 개를 입력하세요: 10 20 (입력)
30
nums = [1, 2, 3, 4, 5]
# 각 숫자를 제곱해서 새 리스트 생성
squared_nums = list(map[lamda x: x**2, nums])
print(squared_nums)
# 출력 : [1, 4, 9, 16, 25]
filter()와 lamdafilter(function, iterable)
nums = [1, 2, 3, 4, 5]
# 짝수만 필터링해서 새 리스트 생성
even_nums = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
# 출력 : [2, 4]