2024. 7. 8. 18:00ㆍ코딩테스트 입문
https://school.programmers.co.kr/learn/courses/30/lessons/120814
문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
7 | 1 |
1 | 1 |
15 | 3 |
입출력 예 설명
입출력 예 #1
- 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
입출력 예 #2
- 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
입출력 예 #3
- 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
피자는 한 판당 일곱 조각이 나오고, 주어진 n명이 최소 1조각을 먹기 위해 얼마만큼의 피자가 필요한지 찾는 문제입니다.
그러면 결국 피자는 최소 n 조각이 필요한데, 한 판당 일곱 조각이 나오므로 n <= k * 7 이라는 공식을 찾을 수 있습니다.
이제 우리는 k >= n / 7인 최소 k를 찾으면 됩니다.
파이썬의 math 패키지를 사용하면 다음과 같습니다.
import math
def solution(n):
# n을 7로 나눈 뒤, 값을 올림 처리한다.
answer = math.ceil(n / 7)
return answer
사실 가독성 측면에서는 이게 가장 좋은 코드지만, 알고리즘용으로는 좋은 코드는 아닙니다.
물론 정~말 미세한 차이기는 한데, 추가적인 함수 호출을 수반하기 때문에 단순한 덧셈과 나눗셈보다 약간 더 많은 오버헤드를 발생시킬 수 있습니다.
이 문제 같은 경우는 함수 없이 이렇게 풀 수도 있습니다.
def solution(n):
answer = (n + 6) // 7
return answer
이건 두 가지 경우로 나누어 살펴볼 수 있습니다.
1. n이 7의 배수일 때: 6 // 7은 0으로 무시되므로 그냥 n // 7과 동일합니다.
2. n이 7의 배수가 아닐 때: 6이 더해짐으로서 n은 n보다 큰 7의 배수와 크거나 같아집니다. 따라서 n // 7 + 1이 된 것과 마찬가지입니다.
패키지를 사용하는 방법과 아닌 방법을 둘 다 알아두시면 좋을 것 같습니다.
'코딩테스트 입문' 카테고리의 다른 글
피자 나눠 먹기 (3) (0) | 2024.07.10 |
---|---|
피자 나눠 먹기 (2) (0) | 2024.07.09 |
짝수는 싫어요 (0) | 2024.07.07 |
최빈값 구하기 (0) | 2024.07.06 |
중앙값 구하기 (0) | 2024.07.05 |