[백준 27182] Rain Diary (C#, C++) - soo:bak
작성일 :
문제 링크
설명
간단한 수학 문제입니다.
문제의 목표는 지난 주 일요일의 날짜
를 구하는 것입니다.
입력으로 주어지는 두 정수는 각각 현재 날짜
, 2주 전의 날짜
입니다.
따라서, 단순히 현재 날짜 - 7
을 통해 지난 주 일요일의 날짜를 구할 수 있을 것이라 생각할 수 있지만,
문제의 조건 중에서 달마다 마지막 날짜의 범위가 28일 ~ 31일
로 다를 수 있다는 조건이 있습니다.
따라서, 2주 전의 날짜
와 현재의 날짜
의 관계를 이용하여 이전 달의 마지막 날짜
를 계산해야 합니다.
최종적으로,현재의 날짜 - 7
값과 위에서 계산한 이전 달의 마지막 날짜
를 이용하여 지난 주 일요일의 날짜를 계산하여 출력합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace Solution {
class Program {
static void Main(string[] args) {
var input = Console.ReadLine()?.Split();
var currentDay = int.Parse(input![0]);
var lastRecordedDay = int.Parse(input![1]);
var daysInMonth = 0;
switch (lastRecordedDay - currentDay + 14) {
case 28:
daysInMonth = 28;
break;
case 29:
daysInMonth = 29;
break;
case 30:
daysInMonth = 30;
break;
case 31:
daysInMonth = 31;
break;
}
int ans = currentDay - 7;
if (ans <= 0) ans += daysInMonth;
Console.WriteLine(ans);
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
int main() {
int currentDay, lastlRecordedDay; cin >> currentDay >> lastlRecordedDay;
int daysInMonth = 0;
switch (lastlRecordedDay - currentDay + 14) {
case 28:
daysInMonth = 28; break ;
case 29:
daysInMonth = 29; break ;
case 30:
daysInMonth = 30; break ;
case 31:
daysInMonth = 31; break ;
}
int ans = currentDay - 7;
if (ans <= 0) ans += daysInMonth;
cout << ans << "\n";
return 0;
}