[백준 2864] 5와 6의 차이 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
두 수가 주어졌을 때, 해당 수에 포함된 5
와 6
이 혼동될 수 있다고 가정합니다.
즉, 5
를 6
으로, 6
을 5
로 인식할 수 있다고 할 때 각각의 수가 가질 수 있는 최솟값과 최댓값을 계산한 뒤,
두 수의 가능한 합 중 최솟값과 최댓값을 출력하는 문제입니다.
예를 들어, 56
이라는 숫자는 다음 두 가지로 해석될 수 있습니다:
최솟값
: 55 (모든6
을5
로 인식)최댓값
: 66 (모든5
를6
으로 인식)
접근법
- 입력으로 주어진 두 수를 문자열로 처리하여
5 ↔ 6
변환을 적용합니다. - 최소값을 구할 땐 모든
6
을5
로,
최대값을 구할 땐 모든5
를6
으로 바꾸어 각각 새로운 수를 만듭니다. - 각 케이스에 대해 두 수를 더한 값을 계산하고, 최솟값과 최댓값을 차례로 출력합니다.
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 input = Console.ReadLine().Split();
string num1 = input[0], num2 = input[1];
string min1 = num1.Replace('6', '5');
string min2 = num2.Replace('6', '5');
string max1 = num1.Replace('5', '6');
string max2 = num2.Replace('5', '6');
int minSum = int.Parse(min1) + int.Parse(min2);
int maxSum = int.Parse(max1) + int.Parse(max2);
Console.WriteLine($"{minSum} {maxSum}");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string num1, num2; cin >> num1 >> num2;
string min1 = num1, min2 = num2, max1 = num1, max2 = num2;
for (char &c : min1) if (c == '6') c = '5';
for (char &c : min2) if (c == '6') c = '5';
for (char &c : max1) if (c == '5') c = '6';
for (char &c : max2) if (c == '5') c = '6';
cout << stoi(min1) + stoi(min2) << " " << stoi(max1) + stoi(max2) << "\n";
return 0;
}