본문 바로가기
Computer Science/PS

[PS] 120814. 피자 나눠 먹기(1)

by BrickSky 2023. 11. 5.

1) 문제: 120814. 피자 나눠 먹기(1)

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

제한사항

  • 1 ≤ n ≤ 100

입출력 예 설명

입출력 예 #1

  • 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.

입출력 예 #2

  • 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.

입출력 예 #3

  • 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.

 

2) 나의 첫 풀이

1명일 때 ~ 7명일 때: 1판
8명일 때 ~ 14명일 때: 2판
15명일 때 ~ 21명일 때: 3판
 
→ 이렇게 보면 7로 나누었을 때 나머지가 없는 경우…?로 풀 수도 있지만 왠지 코드가 길어질 것 같다.
근데! n이 100보다 작은 경우니까 또 크게 상관없을 것 같기도 하고…
 
몫이 0~1인 경우 1판
≤2인 경우 2판
≤3인 경우 3판… 이런 식으로 풀어보자.

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    
    if(1<=n<=100){
        if(0<=n/7<=1){
            answer = 1;
        }
        else if(n/7<=2){
            answer = 2;
        }
        else if(n/7<=3){
            answer = 3;
        }
    }
    return answer;
}

이 풀이는 아닌 것 같다.. 이렇게 쉬운 문제를 길게 풀어서는 안 된다.
 

3) 수정한 풀이

나머지 없이 나눠 떨어지는 경우 해당 연산의 몫을 피자 개수로 정하고,
그렇지 않은 경우에는 연산 결과에 1을 더하는 방식을 떠올렸다.

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    
    if(1<=n<=100){
        if(n%7 == 0){
            answer = n/7;
        }
        else if(n%7 != 0){
            answer = n/7 + 1;
        }
     return answer;
     }

이렇게 해도! 문제가 풀리지 않았다…
 

4) 한번 더 수정한 풀이

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    
    if (1 <= n && n <= 100) {
        if (n % 7 == 0) {
            answer = n / 7;
        } else if (n % 7 != 0) {
            answer = n / 7 + 1;
        }
        return answer;
    }
}

찾았다.
return answer; 이후 괄호가 하나밖에 없다. 이는 if문의 괄호이지 전체 연산의 괄호가 아니었다..
 

5) 배운 점

쉽게 쉽게 생각하자.
이번 문제를 풀으며 몫을 활용하는 아이디어를 활용한다고 나머지를 신경 쓰지 않았고, 나머지를 활용한다고 몫을 신경 쓰지 않았다. 문제를 풀기 위해 전체를 보는 시야를 갖는 게 중요할 것 같다.
또,,, 괄호 잘 신경 쓰기…

'Computer Science > PS' 카테고리의 다른 글

[PS] 120585. 머쓱이보다 키 큰 사람  (0) 2023.11.08
[PS] 120821. 배열 뒤집기  (1) 2023.11.06
[PS] 120898. 편지  (0) 2023.11.05
[PS] 120830. 양꼬치  (0) 2023.11.04
[PS] 120817. 배열의 평균값  (1) 2023.11.03