Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

great minds think alike

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

SWLUG/프로그래머스 스쿨 (C)

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

gapsoo 2023. 8. 10. 23:25

 

 

 


[1] 문제

 

문제 설명

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ n ≤ 100

 

입출력 예

n result
6 1
10 5
4 2

 

입출력 예 설명

입출력 예 #1

  • 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.

 

입출력 예 #2

  • 10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.

 

입출력 예 #3

  • 4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.

 

 

 


[2] 정답 및 해석

 

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

 

1. solution 함수 정의:

 

함수 solution은 정수 n을 입력으로 받고, 정수를 반환한다.

answer라는 이름의 정수 변수를 선언하고 0으로 초기화한다. 이 변수는 함수 내에서 결과 값을 저장하는 데 사용된다.


2. 조건 및 계산:

  • if (n <= 3):  n이 3 이하인 경우, answer를 1로 설정한다.
  • else if (n % 6 == 0):  n이 6의 배수인 경우, answer를 n / 6의 값으로 설정한다.
  • else if (n % 3 == 0): n이 3의 배수이면서 6의 배수가 아닌 경우, answer를 n / 3의 값으로 설정한다.
  • else if (n % 2 == 0): n이 2의 배수이면서 6의 배수나 3의 배수가 아닌 경우, answer를 n / 2의 값으로 설정한다.
  • else: 위의 모든 조건을 만족하지 않는 경우, 즉 n이 위의 어떤 조건에도 해당하지 않는 경우, answer를 n으로 설정한다.
  • return answer;: 함수는 계산된 answer 값을 반환한다.

 

 

 


[3] 오답 풀이

 

이 문제는 최소공배수를 구하는 문제다. 그런데 피자 한 판에 6조각이 들어있다는 조건이 설정되었다.

 

 

#.1 첫 번째 풀이 - 오답

 

✔️ if (n = 1) 은 틀린 표현 --> if (n == 1) 이 맞는 표현이다.

이후에 if (n <= 3) 을 사용했다.

 

✔️ n이 2, 3, 6 으로 나눠지는 경우만 있는 게 아니다! 그 부분을 놓쳤다.

 

 

 

 

 

#.2  두 번째 시도 - 오답

 

 

✔️ if (n = 1) 은 틀린 표현 --> if (n == 1) 이 맞는 표현이다. 대신에  if (n <= 3) 을 사용했다.

 

✔️ n이 2, 3, 6 으로 나눠지는 경우만 있는 게 아니다. 여전히 그 부분을 놓쳤다.



 

 

 

#.3 세 번째 시도 - 정답

 

 

✔️ n이 2, 3, 6 으로 나눠지지 않는 경우를 else 조건문을 추가해서 수정해주었다. 정답~

 

 

 


[4] 느낀 점

 

n의 배수인지 확인하는 조건문으로 if (n % 정수) {} 가 많이 사용되는 것 같다.