실습 코드:

https://colab.research.google.com/drive/1WJy3thgrPfqBLqW9HZDMQct8CZYzcCqz?authuser=0#scrollTo=yzjkest8ag0O

 

Google Colab Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 


문제 설명

머쓱이네 피자 가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

  • 제한사항:
    • ( 2 \leq slice \leq 10 )
    • ( 1 \leq n \leq 100 )

입력 예시 및 설명

slice n result
7 10 2
4 12 3
  • 입력 예시 #1:
    • 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 합니다.
  • 입력 예시 #2:
    • 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 합니다.

문제 접근 방법

  1. 피자 한 판의 조각 수 slice와 사람의 수 n이 주어집니다.
  2. n명이 최소 한 조각씩 피자를 먹으려면 필요한 피자의 수를 계산합니다.
  3. 이를 위해 필요한 피자의 판 수는 nslice로 나눈 값을 올림 처리하면 구할 수 있습니다.

코드 구현

import math

def solution(slice, n):
    # 필요한 피자 판의 수를 계산
    return math.ceil(n / slice)

# 테스트 케이스
print(solution(7, 10))  # 출력: 2
print(solution(4, 12))  # 출력: 3
  • 주석 설명:
    • math.ceil(n / slice): nslice로 나눈 값을 올림하여 필요한 피자 판의 수를 계산합니다.

다른 풀이 방법

  1. 반복문을 이용한 풀이:
def solution(slice, n):
    pizzas = 0
    while n > 0:
        n -= slice
        pizzas += 1
    return pizzas

# 테스트 케이스
print(solution(7, 10))  # 출력: 2
print(solution(4, 12))  # 출력: 3
  • 계산 복잡도: O(n / slice)
  1. 단순 계산을 이용한 풀이:
def solution(slice, n):
    return (n + slice - 1) // slice

# 테스트 케이스
print(solution(7, 10))  # 출력: 2
print(solution(4, 12))  # 출력: 3
  • 계산 복잡도: O(1)

계산 복잡도

  1. 첫 번째 풀이: O(1)
  2. 두 번째 풀이: O(n / slice)
  3. 세 번째 풀이: O(1)

태그

#프로그래머스 #파이썬 #코딩테스트 #입문문제 #피자나눠먹기 #수학적풀이 #반복문 #올림처리 #코딩문제풀이 #알고리즘

+ Recent posts