Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 알고리즘
- 프로젝트
- 플러터
- 연결리스트
- c언어 프로젝트
- 개발
- IT
- 코딩
- dart
- c언어
- Baekjoon
- Develop
- android studio tutorial
- level1
- 백준
- 게임
- 안드로이드 스튜디오
- programmers
- C
- tic-tac-toe
- 코딩테스트
- 단방향 연결리스트
- 틱택토
- 안드로이드
- android studio
- 안드로이드 튜토리얼
- 기초
- 풀이
- Flutter
- 양방향 연결리스트
Archives
- Today
- Total
얼렁뚱땅 개발 블로그
[프로그래머스] Level 1 - 2016 본문
반응형
문제
두 수 a , b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.
입출력 예시
a | b | result |
5 | 24 | "TUE" |
문제를 풀기 전
이 문제를 풀기 전 주어진 날짜의 요일을 구하는 공식인 제라의 공식(Zeller's congruence)이 있다.
참고 자료를 보면 꽤나 읽기 어렵다. 하지만 해당 공식을 이해를 할 필요는 없고, 공식을 알아두기만 하면 언제든지 사용할 수 있다.
제라의 공식은 그레고리력, 율리우스력이 있다. 현재 사용하는 력은 그레고리력이므로, 그레고리력 공식을 사용하면 된다.
공식 중 소프트웨어에서 사용 중 단순화 공식을 사용하면 된다.
- h - 요일 ( 0 : 토요일, 1 : 일요일 , 2 : 월요일 ... 6 : 금요일 )
- q - 일
- m - 월
- y - 년도
윤년이며 1월 2월 같은 경우 지난 해의 13월 14월로 계산을 한다.
참고 자료
en.wikipedia.org/wiki/Zeller%27s_congruence
풀이
1. 요일을 담은 문자열 배열을 선언 및 정의한다.
2. 2016년은 윤년이기 때문에 y-- 와 m += 12을 해준다.
3. 제라의 공식을 이용하여 h을 구한다.
4. answer에 week[h]를 넘겨준다.
코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 제라의 공식은 토요일 : 0 이다. 따라서 토요일 부터 시작하는 문자열 배열을 만든다.
char* week[7] = { "SAT", "SUN", "MON", "TUE", "WED", "THU", "FRI"};
char* solution(int a, int b) {
char* answer = NULL;
int q = b, m = a, y = 2016;
// 2016년은 윤년이기 때문에 지난 해의 13월 14월로 맞춰준다.
if (m <= 2) {
m += 12;
y--;
}
// 제라의 공식을 이용한다.
int h = (q + 13 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
// h에 해당하는 요일을 넘겨준다.
answer = week[h];
return answer;
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] LEVEL 1 - 수박수박수박수박수박수? (0) | 2021.04.23 |
---|---|
[프로그래머스] LEVEL 1 - 음양 더하기 (0) | 2021.04.22 |
[프로그래머스] LEVEL 1 - 내적 (0) | 2021.04.20 |
[프로그래머스] Level 1 - 가운데 글자 가져오기 (0) | 2021.04.20 |
[프로그래머스] Level 1 - 두 개 뽑아서 더하기 (0) | 2021.04.01 |
Comments