[프로그래머스][파이썬] 피자 나눠 먹기 (3) - 수학 (Level 0)

뻥튀기아이스크림·2025년 2월 26일
1
post-thumbnail

◽ 문제 출처

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

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

import math
def solution(slice, n):
    return math.ceil(n / slice)
  • 같은 조각 수를 먹어야하는 문제와 다르게 한 조각 이상만 먹으면 되니 편했다.
  • 입출력 예에서 힌트를 얻었다. 나누어 떨어지면 ceil()이 어차피 되지 않으니 나누어 떨어지지 않으면 한 조각 이상을 먹이기 위해 소수점 올림하였다.
  • 정수 나눗셈 이후 1을 더하는 방법은 나누어 떨어지지 않을 때는 유효하지만, 나누어 떨어질 때는 문제가 되어 틀린 풀이다.

◽ 다른 사람 풀이

def solution(slice, n):
    return ((n - 1) // slice) + 1
  • 바로 위에서 언급한 바와 같이 정수 나눗셈 이후에 1을 더하는 방식이 나누어 떨어질 때 문제가 되니, 제한사항에서 확인할 수 있듯이 n은 무조건 1 이상이므로 1을 먼저 빼주고 정수 나눗셈 이후 1을 더하는 방식이다.

◽ 더 나아가기

  • 내 풀이는 '나누어 떨어지니까 그냥 다른 풀이 생각해봐야지' 라고 생각하여 올림을 통해 풀었다.
  • 간단해 보이지만, 어떻게 하면 해당 상황을 해결할 수 있을까 한 번 고민해보는 것도 올바른 자세같다.
  • 참고) ceil() 시간 복잡도는 O(1)로 상수 시간이다.
  • https://www.geeksforgeeks.org/python-math-ceil-function/



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글