주사위의 개수

2024. 8. 5. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


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


제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • nbox의 원소
  • 주사위는 상자와 평행하게 넣습니다.

입출력 예

box n result
[1, 1, 1] 1 1
[10, 8, 6] 3 12

입출력 예 설명
입출력 예 #1

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

입출력 예 #2

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

최대로 들어갈 수 있는 주사위의 개수를 구하는 문제입니다.

이 문제는 직육면체기 때문에, 정육면체인 주사위가 들어갈 수 있는 최대 수는

(최대 가로 개수) * (최대 세로 개수) * (최대 높이 개수)로 구할 수 있습니다.

간단한 공식이니 파이썬으로 구현해보겠습니다.

def solution(box, n):
    # 상자의 가로, 세로, 높이를 가져온다.
    x, y, h = box
    # 몫들을 곱해 최대 개수를 구한다.
    answer = (x // n) * (y // n) * (h // n)
    return answer

행 기준으로 자르든, 열 기준으로 자르든, 높이 기준으로 자르든 잘린 부분들은 전부 동일하기에 사용할 수 있는 공식입니다.

'코딩테스트 입문' 카테고리의 다른 글

최댓값 만들기(1)  (0) 2024.08.07
합성수 찾기  (0) 2024.08.06
배열 회전시키기  (0) 2024.08.04
공 던지기  (0) 2024.08.03
2차원으로 만들기  (0) 2024.08.02