프로그래머스/입문

[프로그래머스 입문 / 파이썬] 두 수의 나눗셈

m으스으m 2024. 7. 22. 18:50

실습 코드 : 

https://colab.research.google.com/drive/1Y8cTUBOBiutKTl61eVYHOSFZt846djKQ?usp=sharing

 

[프로그래머스 입문 / 파이썬] 두 수의 나눗셈.ipynb

Colab notebook

colab.research.google.com

 

문제 설명

정수 num1num2가 매개변수로 주어질 때, num1num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 0 < num1 <= 100
  • 0 < num2 <= 100

입력 예시

num1 num2 result
3 2 1500
7 3 2333
1 16 62

입력 예시 설명

  • 입력 예 #1: num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.
  • 입력 예 #2: num1이 7, num2가 3이므로 7 / 3 = 2.3333...에 1,000을 곱하면 2333.3333...이 되며, 정수 부분은 2333입니다.
  • 입력 예 #3: num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.

문제 풀이 설명

주어진 두 정수를 나눈 값을 1,000으로 곱한 후 그 결과의 정수 부분을 반환하는 문제입니다. 이를 해결하기 위해 다음의 단계를 따릅니다:

  1. num1num2로 나눈다.
  2. 그 결과에 1,000을 곱한다.
  3. 그 결과의 정수 부분을 반환한다.

코드 구현

def solution(num1, num2):
    # num1을 num2로 나눈 후 1,000을 곱하고 정수 부분을 반환
    return int((num1 / num2) * 1000)

# 테스트 예시
print(solution(3, 2))  # 결과: 1500
print(solution(7, 3))  # 결과: 2333
print(solution(1, 16))  # 결과: 62

풀이법 2: 함수형 프로그래밍 사용

파이썬의 lambdamap을 사용하여 두 수의 나눗셈을 처리할 수 있습니다.

solution = lambda num1, num2: int((num1 / num2) * 1000)

# 테스트 예시
print(solution(3, 2))  # 결과: 1500
print(solution(7, 3))  # 결과: 2333
print(solution(1, 16))  # 결과: 62

풀이법 3: 클래스 메서드 사용

클래스를 사용하여 두 수의 나눗셈을 처리할 수도 있습니다.

class Division:
    @staticmethod
    def solution(num1, num2):
        return int((num1 / num2) * 1000)

# 테스트 예시
print(Division.solution(3, 2))  # 결과: 1500
print(Division.solution(7, 3))  # 결과: 2333
print(Division.solution(1, 16))  # 결과: 62

계산 복잡도

  1. 첫 번째 방법: O(1) - 두 수의 나눗셈과 곱셈 연산은 상수 시간 복잡도를 가집니다.
  2. 두 번째 방법: O(1) - 람다 함수와 map을 사용하는 방법도 상수 시간 복잡도를 가집니다.
  3. 세 번째 방법: O(1) - 클래스 메서드를 사용하는 방법도 상수 시간 복잡도를 가집니다.

태그

  • #프로그래머스
  • #파이썬
  • #코딩테스트
  • #알고리즘
  • #나눗셈
  • #기초문제
  • #입문문제
  • #함수형프로그래밍
  • #클래스
  • #문제풀이