728x90
문제 출처: https://programmers.co.kr/learn/courses/30/lessons/12901
-문제-
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일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
5 | 24 | TUE |
-설명-
1. 윤년은 4년마다 2월에 1일씩 더 많아 28일->29일이므로 각 달수의 일을 배열로 선언해준다.
2. 출력할 문자열을 담은 요일도 배열로 선언해준다. 1월1일이 금요일이므로 요일 선언의 순서는 금요일부터 선언한다.
3. 1월 1일 출력한다고 하면 달, 요일 모두 인덱스 0에 접근해야한다.
따라서 반복문 중단 조건을 (a-1)로 해주고 day에는 day += (b-1)로 해준다.
4. 1월 1일부터 a월 b일까지 도달하는데 걸리는 일 수를 구한 뒤 7로 나머지 연산을 해준다.
5. day배열에 접근한다.
-코드-
#include <string>
#include <vector>
using namespace std;
string weeks[7] = { "FRI","SAT","SUN","MON","TUE","WED","THU"};
int month[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
string solution(int a, int b) {
string answer = "";
int day = 0;
for (int k = 0; k <(a-1); k++) {
day += month[k];
}
day += (b-1);
day %= 7;
answer = weeks[day];
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스-스킬트리(Level 2)/Wanna Be 컴잘알 (0) | 2020.04.08 |
---|---|
프로그래머스 - 124 나라의 숫자(Level 2)/Wanna Be 컴잘알 (0) | 2020.04.08 |
프로그래머스 - 체육복(Level 1)/Wanna Be 컴잘알 (0) | 2020.04.04 |
프로그래머스 - 완주하지 못한 선수(Level 1)/Wanna Be 컴잘알 (0) | 2020.04.04 |
프로그래머스 - 크레인 인형뽑기 게임(2019카카오 개발자 겨울 인턴쉽)/Wanna Be 컴잘알 (0) | 2020.04.04 |