728x90
반응형
문제:
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
입력:
상자의 가로, 세로, 높이가 저장되어있는 배열 box, 주사위 모서리의 길이 정수 n
출력:
상자에 들어갈 수 있는 주사위의 최대 개수
제한사항:
- box의 길이는 3입니다.
- box[0] = 상자의 가로 길이
- box[1] = 상자의 세로 길이
- box[2] = 상자의 높이 길이
- 1 ≤ box의 원소 ≤ 100
- 1 ≤ n ≤ 50
- n ≤ box의 원소
- 주사위는 상자와 평행하게 넣습니다.
box | n | result |
[1,1,1] | 1 | 1 |
[10,8,6] | 3 | 12 |
solution.py:
def solution(box, n):
return (box[0]//n)*(box[1]//n)*(box[2]//n)
풀이설명:
상자의 가로, 세로, 높이마다 상자에 들어갈 정육면체 모양의 주사위를 나누어 들어갈 개수를 구한 후 곱한다.
- box[0],box[1].... 이런식으로 접근하는 방법보다 좋은 방법이 있었다.
- lambda와 map을 활용하면 더 깔끔하게 할 수 있다.
- math.prod(iterable, *, start=1)입력 이터러블(iterable)에 있는 모든 요소의 곱을 계산합니다. 곱의 기본 start 값은 1입니다.
#참조: https://docs.python.org/3/library/math.html
math — Mathematical functions
This module provides access to the mathematical functions defined by the C standard. These functions cannot be used with complex numbers; use the functions of the same name from the cmath module if...
docs.python.org
lambda 매개변수 : 표현식
map(함수, 리스트)
import math
def solution(box, n):
return math.prod(map(lambda v: v//n, box))
728x90
반응형
'코딩테스트 입문 > Python' 카테고리의 다른 글
[프로그래머스/programmers] 팩토리얼 (0) | 2023.07.19 |
---|---|
[프로그래머스/programmers] 최댓값 만들기(1) (0) | 2023.07.17 |
[프로그래머스/programmers] 합성수 찾기 (0) | 2023.07.17 |
[프로그래머스/programmers] 배열 회전시키기 (2) | 2023.07.11 |
[프로그래머스/programmers] 공 던지기 (0) | 2023.07.10 |