본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 2016년 C언어

by starfish22 2021. 11. 28.
728x90

▶문제 : 코딩 테스트 연습 - 2016년 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

 

▶코드 작성

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

char *solution(int a, int b)
{
    // 리턴할 값은 메모리를 동적 할당해주세요.
    char *answer = (char *)malloc(4);
    char week[7][4] = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
    //1월 1일이 금요일이므로 전체일수를 7로 나눈 나머지가 1이 금요일이 되어야 함
    int day[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int total_Day = 0;

    for (int i = 0; i < a - 1; i++)//a월을 제외한 일수 더하기
    {
        total_Day += day[i];
    }

    total_Day += b;//요일을 구하기 위해 b일까지 더해준다 

    strcpy(answer, week[total_Day % 7]);//전체일수를 7로 나눈 나머지가 그 요일을 가리킴

    return answer;
}

 

▶해석

week 배열을 1월 1일이 금요일인 기준에 맞추어 요일을 지정하였다. 반복문으로 a월을 제외한 나머지 일수를 total_Day에 더했다. 마지막으로 b일까지 더해서 7로 나눈 나머지가 해당 요일을 가리킨다.

728x90

댓글