반응형
https://programmers.co.kr/learn/courses/30/lessons/12901
구현 방법
주어진 년도의 a월 b일인지 무슨 요일인지 알기 위해 저는 첼러의 합동식을 사용했습니다.
챌러의 합동식을 이용한 풀이는 메모리 초과로 답안이 통과되지 못했습니다.
그래도 좋은 공식같아 링크 첨부해 놓겠습니다.
https://terms.naver.com/entry.nhn?docId=3534029&cid=60209&categoryId=60209
2016년 1월 1일이 금요일이라고 주어졌으니, 입력한 a월 b일이 무슨 요일인지 알기 위해 1월 1일부터 a월 b일까지 총며칠이 있는지 계산해 주었습니다.
계산한 총 일수를 7로 나누어 떨어지면 금요일, 1이 남으면 토요일, 2가 남으면 일요일, 이렇게 진행되겠죠?
해당 알고리즘을 구현한 코드는 아래와 같습니다.
소스코드
#include <bits/stdc++.h>
using namespace std;
string solution(int a, int b) {
string answer = "";
string days[7] = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
//1월~12월 일수
int months[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int totdays=0;
for(int i=0;i<a-1;i++) {
totdays += months[i];
}
//월들의 일수 합 구하고, b일 더해주기
totdays = totdays+b-1;
//총 일수 합을 7로 나누어 나머지만큼 배열의 값 정답에 넣어줌
answer=days[totdays%7];
return answer;
}
반응형
'코딩테스트 > 프로그래머스(lv1)' 카테고리의 다른 글
[프로그래머스 Level 1] K 번째 수 (C++) (0) | 2021.01.24 |
---|---|
[프로그래머스 Level 1] 모의고사 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 완주하지 못한 선수 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 두개 뽑아서 더하기 (C++) (0) | 2021.01.24 |
[프로그래머스 Level 1] 크레인 인형뽑기 게임 (C++) (0) | 2021.01.24 |
댓글