반응형
시작 날짜와 끝 날짜의 사이 날짜구하기
문제설명
시작 날짜와 끝 날짜가 주어질 때, 두 날짜가 며칠만큼 떨어져 있는지를 구하려고 합니다.
1. 시작 날짜가 1월 1일로부터 며칠만큼 떨어졌는지 구하기
2. 끝 날짜가 1월 1일로부터 며칠만큼 떨어져있는지 구하기
3. (2단계에서 구한 날짜) - (1단계에서 구한 날짜) 구하기
시작 날자의 월, 일을 나타내는 startmonth, startday, 끝 날짜의 월, 일을 나타내는 endmonth, endday가 매개변수로 주어질 때 시작날짜와 끝 날짜가 며칠만큼 떨어져있는지 return하는 solution 함수를 작성했습니다. 위 구조를 참고하여 중복되는 부분을 func_a라는 함수를 완성하세요.
예시
start_month | start_day | end_month | end_day | return |
1 | 2 | 2 | 2 | 31 |
코드 해석
포문을 돌리는 이유 : month 이전의 월(month)들의 날(day)의 합을 구하기 위해서. (예: month 3일 시 1월 + 2월 / 31 + 28)
1. month_list[] 배열은 1월이 배열 0방에 저장되어있기 때문에 month - 1까지 포문을 돌린다.
month가 2일 시 포문은 i가 1일 때 포문을 탈출하므로 총 1바퀴 돈다.
// month가 1일 시 이전의 월이 없기 때문에 바로 포문을 탈출한다.
2. total에 month-1의 날들의 합을 더한다.
3. total에 해당 달(month)의 날(day)을 더한다.
i | month_list[month + i] | total |
0 | month_list[0] | 31 |
int func_a(int month, int day) {
int month_list[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int total = 0;
for (int i = 0; i < month - 1; i++) //1
total += month_list[month + i]; //2
total += day;//3
return total;
}
전체코드
더보기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int func_a(int month, int day) {
int month_list[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int total = 0;
for (int i = 0; i < month - 1; i++)
total += month_list[month + i];
total += day;
return total;
}
int solution(int start_month, int start_day, int end_month, int end_day) {
int start_total = func_a(start_month, start_day);
int end_total = func_a(end_month, end_day);
return end_total - start_total;
}
int main() {
int start_month = 1;
int start_day = 2;
int end_month = 2;
int end_day = 2;
int ret = solution(start_month, start_day, end_month, end_day);
printf("The return value of solution function : %d\n", ret);
}
반응형
'코딩 테스트 > [c언어] cos pro 2급 기출문제' 카테고리의 다른 글
[No.6] 369 게임 박수의 개수는? / cos pro 2급 c언어 기출 문제 (0) | 2021.05.05 |
---|---|
[No.5] 배열의 순서 뒤집기 / cos pro 2급 c언어 기출 문제 (3) | 2021.05.05 |
[No.4] 등장하는 가장 많은 수와 적은 수 구하기 / cos pro 2급 c언어 기출 문제 (4) | 2021.05.03 |
[No.2] 쇼핑몰 등급 별 할인 금액 구하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.02 |
[No.1] 단체 티셔츠 주문하기 / cos pro 2급 c언어 기출 문제 (0) | 2021.05.02 |
댓글