[프로그래머스/C++] ㅡ LV1 - 2016년
2021. 2. 26. 15:03ㆍ필요/코딩테스트(프로그래머스)
문제
programmers.co.kr/learn/courses/30/lessons/12901
풀이
#include <string>
using namespace std;
string solution(int a, int b) {
int monthDay[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 월당 일수
string dOW[] = {"THU","FRI","SAT","SUN","MON","TUE","WED"}; // 요일 종류
int days = 0;
for (int i=0; i<a-1; i++) { // 지난 월들에 대한 일수 추가
days+=monthDay[i];
}
days+=b; // 이번 달 일수 추가
days%=7;
string answer = dOW[days];
return answer;
}
개념
2016년은 윤년이라고 한다.
윤년은 2월 29일이 추가되어, 1년동안 날짜의 수가 366일이 되는 경우이다.
문제 이름이 2016년인 이유가 있었다..
풀이
1월~12월의 일수를 저장하는 int형 배열을 정의한다.
그리고 요일의 이름을 저장하는 문자열 배열을 정의한다.
a = 5 라면, a = 1~4까지의 일수를 모두 더해서 days 변수에 저장한다.
그리고 days 변수에 b를 더한다.
월~일 요일이 7일마다 반복되므로, % (나머지) 연산자를 사용한다.
1월 1일이 금요일인 것을 설정해야하는데, dOW 배열의 순서를 그에 맞춰 변경했다.
'필요 > 코딩테스트(프로그래머스)' 카테고리의 다른 글
[프로그래머스/C++] ㅡ LV1 - 3진법 뒤집기 (0) | 2021.03.02 |
---|---|
[프로그래머스/C++] ㅡ LV1 - 가운데 글자 가져오기 (0) | 2021.02.26 |
[프로그래머스/C++] ㅡ LV1 - 체육복 (0) | 2021.02.25 |
[프로그래머스/C++] ㅡ LV1 - K번째수 (0) | 2021.02.24 |
[프로그래머스/C++] ㅡ LV1 - 모의고사 (0) | 2021.02.24 |