python 코딩테스트 함수, 문장 작성

seoyeon·2023년 4월 14일
0

코딩테스트 python

목록 보기
5/11
post-thumbnail

코딩테스트 연습을 하면서 유용했던 함수를 정리하였습니다.

나머지 구하기

내가 푼 방식

def solution(num1, num2):
    answer = num1 % num2
    return answer

다른 풀이1 => divmod 함수 사용하기

  • divmod() : // 연산자와 % 연산자를 차례대로 인자로 받아서 튜플 형태로 반환
def solution(num1, num2):
    return divmod(num1, num2)[1]

다른 풀이2 => lambda 사용하기

lambda 매개변소 : (반환값으로 사용할 식)

solution = lambda num1, num2 : num1 % num2

섞어서?ㅎㅎ

solution = lambda num1, num2 : num1 % num2

두 수의곱

내가 푼 방식

def solution(num1:int, num2:int)->int:
    answer = num1 * num2
    return answer

수학을 위한 특수 메서드 활용

a + b       a.__add__(b)
a - b       a.__sub__(b)
a * b       a.__mul__(b)
a / b       a.__truediv__(b)
a // b      a.__floordiv__(b)
a % b       a.__mod__(b)
a << b      a.__lshift__(b)
a >> b      a.__rshift__(b)
a & b       a.__and__(b)
a | b       a.__or__(b)
a ^ b       a.__xor__(b)
a ** b      a.__pow__(b)
-a          a.__neg__()
~a          a.__invert__()
abs(a)      a.__abs__()

출처

람다

solution=lambda x,y:x*y

숫자 비교하기

  • 내가 푼거
def solution(num1, num2):
    if num1 == num2 : return 1
    else :  return -1
  • if 삼항연산자 사용한거
def solution(num1, num2):
    return 1 if num1==num2 else -1

두 수의 차

  • lambda 사용
solution = lambda num1, num2 : num1 - num2
  • 특수메서드 활용
solution = lambda num1, num2 : num1.__sub__(num2)

나이 출력


# 1.
# def solution(age):
#     answer = 2023 - age
#     return answer


# 2.
def solution(age):
    return 2022-age+1

# 3.
# solution = lambda age: 2023-age

두수의 합

내가 푼거

# def solution(num1, num2):
#     answer = num1 + num2
#     return answer


solution = lambda num1, num2: num1+num2

sum 활용

  • 참고 => sum은 튜플이나 리스트에 있는 값만 처리해줄 수 있음. 그래서 람다식에 매개변수로 *를 붙여주면 num1과 num2로 들어오는 값을 튜플로 변경해준다.
solution = lambda *x: sum(x)

두수의 나눗셈

  • math 모듈 => import math
    abs : 절대값
    max : 최댓값
    min: 최솟값
    pow: 멱승(제곱)
    round: 반올림(정수)
# // 사용
def solution(num1, num2):
     answer = 0
     answer = 1000 * num1//num2
     return answer

# int로 변환
solution = lambda num1, num2 : (int)(num1/num2 * 1000)

# trunc함수 사용
solution = lambda num1, num2 : math.trunc(num1/num2*1000)

각도기

  • 삼항 연산자 적극 활용하기
  • 조건을 dictionary안에 넣고 for in문으로 조건이 해당되는 값의 키를 리턴시키기
# def solution(angle):
#     if angle<=90:
#         return 1 if angle<90 else 2
#     else:
#         return 3 if angle<180 else 4

#     return answer


# 람다로
solution = lambda angle : 2 if angle==90 else 1 if angle<90 else 4 if angle==180 else 3


# 간단한 방법
# def solution(angle):
#     answer = (angle // 90) * 2 + (angle % 90 > 0) * 1
#     return answer

# 검색
# def solution(angle):
#     angles = {180: 4, 91: 3, 90: 2, 0: 1}
#     for base, result in angles.items():
#         if angle >= base:
#             return result

짝수의 합

문제설명
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

  • for문 짚고가기

  • for i in iterable
    iterable한 타입 : list, dictionary, set, string, tuple, bytes

  • for i in range(종료숫자)
    종료숫자-1까지 수행

# 기본 풀이
def solution(n):
    answer = 0
    for i in range(2, n+1, 2):
        answer += i
    return answer


# n까지 수 중 짝수만 리스트에 넣어준 후 더해주기
solution = lambda n: sum([i for i in range(2, n + 1, 2)])

# 위의 방법과 비슷함
solution = lambda n: sum(range(0, n+1, 2))

# 등차수열 2n의 합 공식 이용하기
def solution(n):
    return 2*(n//2)*((n//2)+1)/2
profile
항상 질문하는 개발자가 되고 싶습니다✋

0개의 댓글