2023-03-23 TIL (2)

0v0baek·2023년 3월 23일
0

TIL

목록 보기
11/92

코딩 테스트 예제를 풀다 충격받은 마법(?)의 한줄의 있어서 기록해두려고 한다.

문제

숫자의 사칙연산 (더하기, 빼기, 곱하기, 나누기)

예제 : 나누기

정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
단, 제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100

내가 푼 방식

def solution(num1, num2):
    if not 0 < num1 <= 100:
        print(f"{num1}은(는) 0보다 크고 100보다 작거나 같아야합니다!")
    if not 0 < num2 <= 100:
        print(f"{num2}은(는) 0보다 크고 100보다 작거나 같아야합니다!")
    else:
        return int(num1 / num2)

다른 사람의 solution

1

solution = int.__floordiv__

2

solution = lambda x, y : x//y

한 줄로 해결해버리다...lambda는 분명 알고있는 방식이었는데 생각도 못했다!! 충격 받아서 저것들이 무엇인지 파헤쳐보기로 함.

1. operator : 함수로서의 표준 연산자

참고 링크

저 floordiv라는 건 operator라는 python 내장 연산자안에 있는 함수 중 하나다.
floordiv는 괄호 안에 들어간 인수의 나눗셈을 정수로 반환한다. 즉, 소숫점이 없다.

예시를 보자.

1

print(int.__floordiv__(6, 3))

2

import operator

print(operator.__floordiv__(5,3))

형태는 이러하다. 앞에 int를 붙이면 따로 무언가를 import할 필요는 없으나, operator를 사용할 때는 operator를 import 해줘야 한다.

그 외에도 operator에는

# 덧셈
operator.__add__(a, b)
# 뺄셈
operator.__sub__(a, b)

등 여러 연산자들이 있으니, python docs를 보면서 활용하면 될 듯 하다.

2. lambdas

참고 링크
lambda는 함수를 한 줄로 쓸 수 있게 만들어주는 것이다. 보통은

lambda a, b : a + b

이런 식으로, 매개변수 : 식 형태로 이루어져있다.
예시는 사칙 연산을 들었는데, 얘는 사칙 연산식 외에도 map, filter, reduce 등 다른 함수들과 엮어 쓸 때 빛을 발하는 녀석이라고 한다.
기초 강의를 들을 때 마지막에 어렴풋이 나오긴 했는데, 이렇게 함수를 간단하고 직관적으로 해결시켜주기도 하는구나! 놀랍다.

.
.

여담

이런 python 내장 함수들 보면서 느끼지만, 정말 인간은 편리성을 위해 모든 걸 단축시키는 구나 싶어서 놀랍다. ㅋㅋ 그리고 내가 뻘뻘 땀 흘리면서 몇 줄 씩 써 내려간 코드를 한 줄로 해결할 수 있는 방법을 발견할 때마다 아!! 이제 이 짓거리 안해도 된다!! 신난다!! 하고 희열을 느낀다. python 공부를 하면서 새로운 지식이 늘어갈 때 마다 그런 부분이 재밌는 것 같다.

profile
개발 공부 하는 비전공자 새내기. 꾸준히 합시다!

0개의 댓글