프로그래머스 입문 문제

ParkCode·2024년 12월 4일

알고리즘 공부

목록 보기
5/11

1. Quiz

  • 머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

1) 입출력 예시

  • 상자의 크기가 가로 1, 세로 1, 높이 1이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.

2) 입출력 예시

  • 상자의 크기가 가로 10, 세로 8, 높이 6이므로 모서리의 길이가 3인 주사위는 12개 들어갈 수 있습니다.

2. 내 풀이

def solution(box, n):
    a = box[0] // n
    b = box[1] // n
    c = box[2] // n
    return a * b * c

주사위가 들어갈 수 있는 최대의 수를 구하기 위해 가로, 세로, 높이 값을 몫으로 나눈 뒤에
부피를 구하는 공식인 가로 세로 높이를 사용하여 주사위의 개수를 구했다.

3. 다른사람 풀이

import math

def solution(box, n):
    return math.prod(map(lambda v: v//n, box))

4. math.prod()

  • math.prod() : ()안에 있는 모든 iterable 요소들의 곱을 구한다.
    위의 코드를 해석하자면, box안에 있는 모든 값 v들을 n으로 나눈 값의 몫을 모두 곱하는 값을 구한다.
  • math.prod(iterable, *, start=1)
    입력 이터러블(iterable)에 있는 모든 요소의 곱을 계산합니다. 곱의 기본 start 값은 1입니다.
    iterable이 비어 있으면, start 값을 반환합니다. 이 함수는 숫자 값과 함께 사용하기 위한 것으로, 숫자가 아닌 형을 거부 할 수 있습니다.

💡파이썬 참고문헌

profile
프론트엔드 개발자

0개의 댓글