-
백준 1924 - 2007년백준 algorithm 2020. 7. 10. 14:12반응형
=> 구현 문제입니다.
=> 해당 문제의 경우 1년의 case만 생각하면 되기 때문에 brute Force(브루트 포스)로 문제를 풀어도 전혀 무방합니다.
-
week [7] : 일주일을 저장하는 배열
-
index : 위의 배열을 따라다니며 요일을 확인하는 변수
-
X와 Y의 값을 입력받습니다.
-
switch case문을 이용해 한 달이 31일인 경우, 30일인 경우 28일인 경우를 나눕니다.
-
제가 구하는 달의 일까지만 index를 지속적으로 추가해줍니다.
-
index는 7을 벗어나지 않으므로, %7을 해주어 숫자가 커지는 것을 방지해줍니다.
-
weel [index]의 값을 출력합니다.
=> 위와 같은 logic을 따라 입력받은 X월 Y일의 요일을 알아낼 수 있습니다.
=> 다른 사람의 경우 X 이전의 달들을 index에 더한 후, Y의 값만큼 더한 후, %7을 통해 문제의 답을 알아내는 방법을 사용했습니다.
=> 해당하는 방법이 훨씬 간단한 코드를 구현할 수 있으며, 훨씬 빠른 속도를 자랑합니다.
=> 조금 생각하는 습관을 들여야겠다는 생각을 하였습니다.
#include <iostream> #include <algorithm> #include <string> using namespace std; string week[7]={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int X, Y; cin >> X >> Y; int index =0; //요일 가리킬 index, 1월 1일은 월요일 for(int i=1; i<=X; i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: { if(i!= X) { for(int j=0; j<31; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } else{ for(int j=0; j<Y; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } } break; case 2: { if(i!= X) { for(int j=0; j<28; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } else{ for(int j=0; j<Y; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } } break; case 4 : case 6 : case 9 : case 11: case 12: { if(i!= X) { for(int j=0; j<30; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } else{ for(int j=0; j<Y; j++) { if(index+1 >6) { index = (index+1)%7; } else{ index++; } } } break; } } } cout<<week[index]<<'\n'; return 0; }
반응형'백준 algorithm' 카테고리의 다른 글
백준 2667 - 단지번호붙이기 (0) 2020.07.23 백준 1015 - 수열 정렬 (0) 2020.07.15 백준 10989 - 수 정렬하기 3 (0) 2020.07.09 백준 1707 - 이분 그래프 (0) 2020.07.09 백준 1697 -숨바꼭질 (0) 2020.07.04 -