본문 바로가기

Python

[Python] 피자 나눠 먹기(3) math.ceil, ((n-1) // slice) +1

문제 설명

머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다.

피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

((n-1) // slice) +1

  • 기본 개념
    • 한 판의 피자는 slice 개의 조각으로 구성되어 있다.
    • n명의 사람이 최소 한 조각씩 먹으려면 최소 n개의 조각이 필요하다.
  • 필요한 피자 판 수 계산
    • 한 판의 피자에 slice 조각이 들어있기 때문에, n명이 피자를 먹기 필요한 피자 판 수 = n/slice
    • 하지만 사람 수 n이 slice로 나누어 떨어지지 않을 때, 나머지 사람들을 위한 1판의 추가 피자가 필요하다.
    • 이를 해결하기 위해서는 올림 연산을 통해 정수 판 수를 계산해야 한다.
  • 계산식 설명
    • 정수 나눗셈에서 올림을 하기 위한 방법: (n + (divisor -1)) // divisor
      • 나눗셈: 나머지를 버리고 몫만 취한다. (7 // 3 = 2, 나머지 1)
      • 올림: 7 // 3 = 2.333... 이를 올리면 3
    • 계산식 간소화: ((n-1) // slice) +1
      • (n + slice - 1) // slice = ((n - 1 + slice) // slice) = ((n -1) // slice) +1
      • (n - 1) // slice: (n - 1)을 slice로 나눈 몫이다.
      • 나머지 부분을 올리기 위해서는 1을 추가로 더해주면 된다.
        • slice // slice: 항상 1 why? slice는 0이 아니기 때문이다.

 

math.ceil

  • 기본 개념, 필요한 피자 판 수 계산: 상동
  • math.ceil 정의
    • The math.ceil() method rounds a number UP to the nearest integer, if necessary, and returns the result.
      가장 가까운 정수로 올림하는 메소드이다.
    • Tip: To round a number DOWN to the nearest integer, look at the math.floor() method.
      내림이 필요할 경우에는 math.floor()을 사용할 수 있다.
  • 참고 자료: https://www.w3schools.com/python/ref_math_ceil.asp
 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com


https://github.com/seonmin5/codingtest_Python

 

codingtest_Python/프로그래머스/0/120816. 피자 나눠 먹기 (3) at d6a2c5167c896fc26300dd8e74affbbc6c676b63

Contribute to seonmin5/codingtest_Python development by creating an account on GitHub.

github.com

반응형