[백준 2991] 사나운 개 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
두 마리 개의 공격/휴식 주기가 주어질 때 각 사람이 몇 마리에게 공격받는지 구하는 문제입니다.
접근법
각 개는 공격 시간 후 휴식 시간을 반복하는 주기를 가집니다.
도착 시각을 주기로 나눈 나머지가 공격 시간 내에 있으면 공격받습니다.
두 개에 대해 각각 검사하여 합을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
class Program {
static void Main() {
var line1 = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
var a = line1[0]; var b = line1[1]; var c = line1[2]; var d = line1[3];
var times = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
foreach (var t in times) {
var cnt = 0;
var m1 = t % (a + b);
var m2 = t % (c + d);
if (m1 > 0 && m1 <= a) cnt++;
if (m2 > 0 && m2 <= c) cnt++;
Console.WriteLine(cnt);
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a, b, c, d;
if (!(cin >> a >> b >> c >> d)) return 0;
int p, m, n; cin >> p >> m >> n;
int arr[3] = {p, m, n};
for (int t : arr) {
int cnt = 0;
int m1 = t % (a + b);
int m2 = t % (c + d);
if (m1 > 0 && m1 <= a) cnt++;
if (m2 > 0 && m2 <= c) cnt++;
cout << cnt << "\n";
}
return 0;
}