Algorythm/프로그래머스 스쿨 (C 언어)

[C] 프로그래머스 스쿨 5주차 문제 3: 피자 나눠 먹기 (1)

gapsoo 2023. 8. 4. 23:39


[1] 문제

 

 

문제 설명

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

 

 

제한사항

  • 1 ≤ n ≤ 100

 

입출력 예

n result
7 1
1 1
15 3

 

 

 

 


[2] 정답 및 해석

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
 
int solution(int n) {
    int answer = 0;
    if (n<=7) {
        answer = 1;
    }
    else if (n % 7 == 0)
    {
        answer = n / 7;
    }
    else {
        answer = ((int)(n/7)) + 1;
    }
    return answer;
}
cs

 

  1. int solution(int n): 정수 n을 입력으로 받고, 정수를 반환하는 함수이다.
  2. int answer = 0;: 함수 내부에서 사용할 변수 answer를 선언하고 0으로 초기화한다.
  3. if (n <= 7): 만약 n이 7 이하인 경우를 체크한다.
  4. answer = 1;: n이 7 이하인 경우, 한 그룹으로 모두 수용 가능하므로, answer에 1을 대입한다.
  5. else if (n % 7 == 0): n이 7보다 크지만 7의 배수인 경우를 체크한다.
  6. answer = n / 7;: n이 7의 배수인 경우, 그룹을 나누지 않고 7명씩 그룹을 만들 수 있으므로, answer에 n을 7로 나눈 값을 대입한다.
  7. else: 위의 두 경우가 아닌 경우, 즉 7보다 크지만 7의 배수가 아닌 경우를 처리한다.
  8. answer = ((int)(n / 7)) + 1;: n을 7로 나눈 몫에 1을 더하여 그룹의 수를 계산한다. 나머지가 있을 때에도 부족한 인원을 새로운 그룹으로 만들어주기 위해서 1을 더해준다.
  9. return answer;: 계산된 answer를 반환한다.

[3] 풀이 과정

 

#.1 첫 번째 풀이 - 오답

 

어떤 부분이 틀렸을까?

음... 고민을 좀 해보다가 14인 경우에 2판이 필요한데, 계산 결과는 3으로 나온다는 사실을 깨달았다.

 

 

#. 2 두 번째 결과 -  정답

 

 

그래서 7로 나눠 떨어지는 경우도 추가해서 고쳐주었더니 정답!

 

 

 


[4] 추가 학습

 

 

✏️ https://exponent.tistory.com/53

 

[C] 프로그래머스 스쿨_2주차 문제1: 두 수의 나눗셈

[1] 문제 문제 설명 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. 제한사항 0 HTML 삽입 미리보기할 수 없는

exponent.tistory.com

 

나눗셈 연산을 주로 다뤘던 문제를 가져와봤다!

 

 


[5] 느낀 점

이전에는 정답 +  정답 코드 해석만 올렸었는데,

내가 풀었던 모든 과정(틀렸던 과정까지도) 을 적는 것이 부족한 부분을 찾는 데에 더 도움이 되는 것 같다.

그리고 전에 틀렸던 내용을 또 틀리는 경우도 꽤나 많이 있었다.

글에 적지는 않았지만 조건문 뒤에 {} 를 붙여야 한다던지 하는...

어렵게 느껴진 문제는 아니었지만 역시나 풀고 나니 뿌듯하다 ;)