주사위 게임 2

장현웅·2024년 4월 3일

풀이

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

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

lamda는 함수를 정의하는 키워드로 lambda 인수: 표현식 형식으로 인수는 함수에 전달되는 매개변수이고, 표현식은 함수의 반환 값을 나타낸다.

sum = lamda x, y, z : x + y + z
print(sum(1, 2, 3)) 

# 출력 : 6

lamda함수는 간단한 함수를 한 줄로 작성할 때 유용하다.

map() 함수와 filter() 함수와 lamda함수 사용 예제

  1. map()lamda
    map() 함수는 두 번째 인자인 시퀀스의 모든 요소에 첫 번째 인자로 전달된 함수를 적용하고, 그 결과를 새로운 iterable로 반환
map(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]
  1. filter()lamda
    filter()함수는 주어진 함수의 반환 값이 참(True)인 경우에 대해만 이터러블 객체의 요소를 반환
filter(function, iterable)
nums = [1, 2, 3, 4, 5]

# 짝수만 필터링해서 새 리스트 생성
even_nums = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  

# 출력 : [2, 4]

0개의 댓글