프로그래머스/입문

[프로그래머스 입문 / 파이썬] 피자 나눠 먹기

m으스으m 2024. 7. 24. 10:37

실습 코드 :

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

 

[프로그래머스 입문 / 파이썬] 피자 나눠 먹기.ipynb

Colab notebook

colab.research.google.com

 


문제 설명

머쓱이네 피자 가게에서는 피자를 일정 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

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

입력 예시 및 설명

n result
7 1
1 1
15 3
  • 입력 예시 #1:
    • 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
  • 입력 예시 #2:
    • 1명이 최소 한 조각을 먹기 위해 1판이 필요합니다.
  • 입력 예시 #3:
    • 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.

문제 접근 방법

  1. 피자 한 판은 7조각으로 이루어져 있습니다.
  2. 사람 수 n을 7로 나눠서 필요한 피자의 수를 계산합니다.
  3. 나머지가 있으면 한 판을 더 추가합니다.

코드 구현

def solution(n):
    # 필요한 피자 판의 수를 계산
    return (n + 6) // 7

# 테스트 케이스
print(solution(7))  # 출력: 1
print(solution(1))  # 출력: 1
print(solution(15)) # 출력: 3
  • 주석 설명:
    • (n + 6) // 7 : n을 7로 나눈 몫에 1을 더해줌으로써 나머지가 있는 경우 한 판을 더 추가합니다.

다른 풀이 방법

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

# 테스트 케이스
print(solution(7))  # 출력: 1
print(solution(1))  # 출력: 1
print(solution(15)) # 출력: 3
  • 계산 복잡도: O(n/7)
  1. 수학적 접근을 이용한 풀이:
import math

def solution(n):
    return math.ceil(n / 7)

# 테스트 케이스
print(solution(7))  # 출력: 1
print(solution(1))  # 출력: 1
print(solution(15)) # 출력: 3
  • 계산 복잡도: O(1)

계산 복잡도

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

태그

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