오답노트
프로그래머스 1단계 - 2016년 본문
https://programmers.co.kr/learn/courses/30/lessons/12901?language=cpp#include <string> #include <vector> using namespace std; string solution(int a, int b) { string answer = ""; int day = 0; for(int i = 1; i < a ; i ++) { if(i<8) { if(i%2 == 0) { if(i == 2) day += 29; else day += 30; } else day += 31; } else { if(i%2 == 0) day += 31; else day += 30; } } day += b; int n = 0; while(1) { int tmp = 1 + n*7; if(tmp > day) { int ntmp = 1 + (n-1)*7; day = day - ntmp; switch(day) { case 0: answer = "FRI"; break; case 1: answer = "SAT"; break; case 2: answer = "SUN"; break; case 3: answer = "MON"; break; case 4: answer = "TUE"; break; case 5: answer = "WED"; break; case 6: answer = "THU"; break; } break; } else n++; } return answer; }
- 문제 파악
2016년 1월 1일은 금요일이다. 2016년은 윤년일 때, 2016년 a월 b일의 요일을 구하여라.
- 정답
1월 1일은 금요일을 기준으로 일주일 마다 요일이 같게된다.
1월 1일부터 n주 후에 a월 b일과 가장 가까운 날부터 a월 b일까지 세면 된다.
'C,C++ > 코딩테스트' 카테고리의 다른 글
프로그래머스 - 1단계 - 3진법 뒤집기 (0) | 2022.05.29 |
---|---|
프로그래머스 - 1단계 - 예산 (0) | 2022.05.28 |
프로그래머스 1단계 - 최소직사각형 - 오답노트 (0) | 2022.05.28 |
프로그래머스 1단계 - 가운데 글자 가져오기 (0) | 2022.05.27 |
프로그래머스 1단계 - 같은 숫자는 싫어 (0) | 2022.05.27 |