[백준 8794] Poniedziałki (C#, C++) - soo:bak
작성일 :
문제 링크
설명
문제의 목표는 주어진 조건에 따라, 특정 연도에서 월요일 의 횟수를 계산하는 것입니다. 
풀이 과정은 다음과 같습니다.
- 첫 번째 주에서 월요일의 수 계산
 - 연도의 첫 번째 날이 월요일인 경우, 첫 번째 주에는 하나의월요일이 있습니다.
- 그렇지 않으면 첫 번째 주에 월요일은 없습니다.
 
 
- 연도의 첫 번째 날이 
- 연도의 나머지 일수에서 월요일의 수 계산
 - 첫 번째 주 이후의 전체 주에서 월요일의 수를 계산합니다.
- 나머지 일수에서 추가로 월요일이 있는지 확인합니다.
 
- 첫 번째 주 이후의 전체 주에서 
- 두 결과 합산
 - 첫 번째 주와 나머지 주에서의 월요일의 수를 합하여 총월요일의 수를 구합니다.
 
- 첫 번째 주와 나머지 주에서의 
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
namespace Solution {
  class Program {
    static void Main(string[] args) {
      var z = int.Parse(Console.ReadLine()!);
      for (int i = 0; i < z; i++) {
        var inputs = Console.ReadLine()!.Split();
        var n = int.Parse(inputs[0]);
        var m = int.Parse(inputs[1]);
        var l = int.Parse(inputs[2]);
        int firstWeekMondays = (l == 1) ? 1 : 0;
        n -= (m - l + 1);
        var otherMondays = n / m;
        var remainingDays = n % m;
        int extraMondays = (remainingDays >= 1) ? 1 : 0;
        Console.WriteLine(firstWeekMondays + otherMondays + extraMondays);
      }
    }
  }
}
[ 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() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int z; cin >> z;
  for (int i = 0; i < z; i++) {
    int n, m, l; cin >> n >> m >> l;
    int firstWeekMondays = (l == 1) ? 1 : 0;
    n -= (m - l + 1);
    int otherMondays = n / m;
    int reaminingDays = n % m;
    int extraMondays = (reaminingDays >= 1) ? 1 : 0;
    cout << firstWeekMondays + otherMondays + extraMondays << "\n";
  }
  return 0;
}