1 a n G u a g e /+=
[코딩연습] 피자나눠먹기 - c언어
동혼
2023. 4. 3. 01:44
출처: 프로그래머스
문제 :
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
내 답 :
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int slice, int n) {
int answer = 0;
if((slice < 2 && slice > 10) && (n < 1 && n > 100)) return 0; //입력값 검증
answer = n%slice > 0 ? n/slice +1 : n/slice;
return answer;
}
코드 작성 이유 :
1. 입력값 검증이 필요하다 느꼈다.
2. return answer; 이 아닌
return n%slice > 0 ? n/slice +1 : n/slice; 을 할 수 도 있겠지만
유지보수를 위해 return answer 은 그대로 두고 answer 부분만 수정 할 수 있도록 짬.
그런 이유로 변수를 선언하는 곳에서도 코드를 안 넣었다.( int answer = n%slice > 0 ? n/slice +1 : n/slice; )
참고할 다른 사람 코드
방법1
리턴 기본값을 사람수/피자조각수 의 몫으로 한다.
만약 (사람수/피자조각수) 나머지값이 있다면 피자가 한 판 더 필요하므로 리턴값에 +1를 해서 리턴한다.
-> 나보다 중복문구가 없어져서 가독성이 보다 좋은 것 같다. 앞으로 참고할 것들
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int slice, int n) {
int answer = n/slice;
answer += (n%slice > 0) ? 1 : 0;
return answer;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int slice, int n) {
int answer = 0;
answer = n / slice;
if (n % slice != 0) answer++;
return answer;
}
방법2 : !! 사용
이중부정을 사용한 건가?
좀 더 찾아보고 글 수정해야겠다
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int s, int n) {
return n/s+!!(n%s);
}