프로그래머스 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 |
댓글