본문 바로가기
개발 공부 일지/Python

프로그래머스 코딩테스트 입문 day1 : 사칙연산

by yelimu 2024. 6. 20.

두 수의 합/차/곱/몫 구하기

: 간단히 + - * // 연산자를 써서 풀면 된다고 생각했는데 첫번째 문제부터 다른 사람들의 풀이를 보고 놀랐다. 

새로운 세계가 있는거같달까.. 같은 문제라도 어떻게 접근하느냐에 따라  푸는 방법이 정말 다양하다. 


1. 두 수의 합 / 차 : 정수 num1, num2의 합을 return 하는 solution 함수 

 

[내 풀이]

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

 

 ... 마일드 하다~  나름 int 로 받기 ㅎ

 

[다른 사람의 풀이]

(1) 

solution = lambda *x: sum(x) 

 

 오늘 포스팅했는데 lambda 떠올리지도 못한.. 정말 간결하다.

*x는 함수로 들어오는 인수를 튜플로 패킹한다

 

유사한 풀이

solution = lambda x, y: x+y

 

(2)

def solution(num1, num2):
    return sum([num1, num2)

 

sum 을 사용하는 방법도 있다!

 

(3) 

def solution(num1: int, num2: int) -> int: 

    answer = num1 + num2

    return answer

 

신기해서 지피티한테 달려감

type hint 를 사용하여 함수의 인자와 반환값의 타입을 명시하는 방법


2. 두 수의 곱

 

[내 풀이]

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

 

... 배워서 나도 한번 써봄 으흐흐 

 

[다른 풀이 방법]

(1) 

def solution(num1, num2):

    i = 0

    answer = 0

    while i < num2:

        answer += num1

        i += 1

    return answer

 

곱셈이라는게 결국은 num1을 num2 번 더한다는 거니까 (ex. 3 * 4 = 3 + 3+ 3+ 3) 

이런 식으로도 쓸수 있구나 

 

(2) 

def solution(*num1):

    return num1[0] * num1[1]

 

인수를 받아 num1이라는 튜플로 반환하고 

0번 인덱스와 1번 인덱스의 곱으로 표현 


3. 몫 구하기 

 

[내 풀이]

def solution(num1, num2):
    answer = 0
    
    while num1 >= num2:
        num1 -= num2
        answer += 1
        
    return answer

 

또는 num1 // num2

 

나도 한번 반복문을 이용해서 풀어보기 ㅎ

근데 생각보다 잘못 생각해서 오래 걸렸다;

 

[다른 풀이 방법]

(1) 

solution = int.__floordiv__

 

int class의 메소드를 이용한 풀이..

 

(2)

def solution(num1, num2):

    answer = num1 / num2

    return int(answer)

 

소수점이 나올수 있으니까 int 로 날려버리기 

 

(3) 

def solution(num1, num2):

    return divmod(num1, num2)[0]

 

또는 

  a, b = divmod(num1, num2) 

  return a

 

divmod =>  [0] : 몫 [1] : 나머지

 

(4) 

import math

 

def solution(num1, num2):

    return math.floor(num1/num2)

 


 

코테 제목만 보고 아 뭐 쉽겠네 ^_ ^ 하며 들어갔지만 세상은 넓고 똑똑한 사람은 많다!