본문 바로가기
  • ̀⁽ᵕ̈⁾ ́
algorithms

2020.07.02 PS 문제 (1)

by j2j2y 2020. 7. 2.

프로그래머스 level 1단계 "2016년" 문제이다. 

 

<문제 설명>

2016년 1월 1일은 금요일입니다. 2016년 a월 b 인 무슨 요일일까요?

두 수 a , b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다.

예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

 

<제한 조건>

  • 2016년은 윤년입니다.
  • 2016년 a월 b 인 실제로 있는 날입니다. (13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다)

 

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

char *day[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};

char* solution(int a, int b) {
    // 리턴할 값은 메모리를 동적 할당해주세요.
    char* answer = (char*)malloc(sizeof(char));
    int i = 0;
    switch(a){
        case 1:
            i = 5;
            break;
        case 2:
            i = 1;
            break;
        case 3:
            i = 2;
            break;
        case 4:
            i = 5;
            break;
        case 5:
            i = 0;
            break;
        case 6:
            i = 3;
            break;
        case 7:
            i = 5;
            break;
        case 8:
            i = 1;
            break;
        case 9:
            i = 4;
            break;
        case 10:
            i = 6;
            break;
        case 11:
            i = 2;
            break;
        case 12:
            i = 4;
            break;
            
    }
    for(int j = 2; j <= b; j++){
                i = (i+1) % 7;
    }
    answer = day[i];
    return answer;
}

<자아성찰>

level 1 문제임에도 불구하고 한참 고민의 시간을 가진 후 풀게 되었다. 

내가 PS 문제에 익숙하지 않다는 것을 다시금 느낄 수 있었다. 

나의 코드를 다시 보니 switch부분이 뭔가 가독성 부분에서 비효율적인 것 같고

요일을 담은 day 배열 변수를 global variable이 아닌 local variable로 했었으면

메모리 부분에서 좀 더 효율적이었을 것 같다.

다른 사람들은 어떻게 풀었는지 복습해보아야겠다.

 

고작 한문제 성공했지만 뿌듯함이 올라온다.

 ᕕ( ᐛ )ᕗ 

'algorithms' 카테고리의 다른 글

[level1] 결과 받기  (0) 2022.01.16
2020.09.27 4주차 백준문제  (0) 2020.09.27
2020.07.02 PS 문제 (2)  (0) 2020.07.02

댓글