#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N, temp, m = 0, y = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> temp;
y += (temp / 30 + 1) * 10;
m += (temp / 60 + 1) * 15;
}
if (m < y) cout << "M " << m;
else if (m > y) cout << "Y " << y;
else if (m == y) cout << "Y M " << m;
return 0;
}
30초 미만이거나 60초 미만이어도 요금이 나오므로 나눈 후 1을 더하고 요금을 곱하면 됩니다.
3개의 숫자를 입력받아 곱한 후, 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지 구하는 문제입니다.
3. 소스코드
BOJ 2577번 숫자의 개수 C++ 풀이입니다.
#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int A, B, C, mul;
int arr[10] = {0, };
cin >> A >> B >> C;
mul = A * B * C;
while (mul > 0) {
arr[mul % 10]++;
mul /= 10;
}
for (int i = 0; i < 10; i++)
cout << arr[i] << '\n';
return 0;
}
각각의 숫자가 몇 번씩 쓰였는지 구하기 위해 arr[10]을 선언하고 0으로 초기화했습니다.
arr[mul % 10]을 통해 mul의 일의 자리 숫자를 구해서 arr배열의 해당 인덱스에 +1을 해줍니다.
A와 B를 입력받은 후 A와 B의 사이에 있는 숫자의 개수와 숫자들을 출력하는 문제입니다.
3. 소스코드
BOJ 10093번 숫자 C++ 풀이입니다.
#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
long long A, B;
cin >> A >> B;
if (A == B) cout << 0;
else if (A < B) {
cout << B - A - 1 << '\n';
for (long long i = A + 1; i < B; i++) cout << i << ' ';
}
else if (A > B) {
cout << A - B - 1 << '\n';
for (long long i = B + 1; i < A; i++) cout << i << ' ';
}
return 0;
}
1 <= A, B <= 10^15 이므로 int의 범위를 초과합니다. 따라서 long long을 써야 합니다.
A < B가 아니라 A, B이므로 A = B인 경우와 A > B인 경우도 고려해야 합니다.
7개의 자연수를 입력받아 홀수가 있으면 홀수의 합과 최솟값을 출력하고, 홀수가 없으면 -1을 출력하는 문제입니다.
3. 소스코드
BOJ 2576번 홀수 C++ 풀이입니다.
#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, min = 100, sum = 0;
for (int i = 0; i < 7; i++) {
cin >> n;
if (n % 2 == 1) {
sum += n;
if (n < min) min = n;
}
}
if (sum == 0) cout << -1;
else cout << sum << '\n' << min;
return 0;
}
입력받는 수가 0보다 크고, 100보다 작으므로 min의 초기값을 100으로 할당했습니다.