[프로그래머스][C++] 2016년
2016년
문제 링크
분석
1월 1일부터 a
월 b
일까지의 총 일수를 구한뒤, 요일의 개수(7)로 나누면 해당 날짜가 어떤 요일인지 구할 수 있습니다.
각 월마다 일수가 다르므로 각 월의 일수를 저장한 배열을 만들어야합니다.
2016년 2월은 윤년이므로 29일입니다.
각 요일을 저장한 배열또한 만들어두어야합니다.
1월 1일이 금요일부터이므로 배열의 시작도 금요일부터 시작이어야합니다.
풀이
#include <string>
#include <vector>
std::string solution(int a, int b) {
std::string answer = "";
int totalDate = 0;
std::vector<std::string> week{ "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" };
std::vector<int> date{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < a - 1; ++i)
{
totalDate += date[i];
}
totalDate += b;
answer = week[totalDate % 7];
return answer;
}
반복문으로 각 월의 일수를 더해 총 일수를 구하고, 마지막 a
달에는 b
에 대한 일수만 포함해야합니다.
총일수를 구했다면 요일의 개수인 7로 나눈다면 해당하는 요일의 값이 나옵니다.
성능 요약
시간 복잡도는 $O(n)$입니다.
공간 복잡도는 $O(1)$입니다.
테스트 1 〉 통과 (0.01ms, 4.15MB)
테스트 2 〉 통과 (0.01ms, 4.2MB)
테스트 3 〉 통과 (0.01ms, 4.01MB)
테스트 4 〉 통과 (0.01ms, 4.14MB)
테스트 5 〉 통과 (0.01ms, 4.13MB)
테스트 6 〉 통과 (0.01ms, 4.18MB)
테스트 7 〉 통과 (0.01ms, 4.2MB)
테스트 8 〉 통과 (0.01ms, 4.12MB)
테스트 9 〉 통과 (0.01ms, 3.61MB)
테스트 10 〉 통과 (0.01ms, 4.11MB)
테스트 11 〉 통과 (0.01ms, 3.61MB)
테스트 12 〉 통과 (0.01ms, 4.13MB)
테스트 13 〉 통과 (0.01ms, 3.68MB)
테스트 14 〉 통과 (0.01ms, 4.14MB)
댓글남기기