문제 링크입니다: https://www.acmicpc.net/problem/2864
알고리즘은 아래와 같습니다.
1. 최대합을 구하고 싶을 때
a) 각 자리수마다 쪼개서 해당 자리수가 5이면 6으로 바꿔주고
b) 새로운 A와 B를 더해줍니다.
2. 최소합을 구하고 싶을 때
a) 각 자리수마다 쪼개서 해당 자리수가 6이면 5로 바꿔주고
b) 새로운 A와 B를 더해줍니다.
#include <iostream>
using namespace std;
int A, B;
//최대가 되려면 5가 모두 6이 되어야 한다
int maxSum(void)
{
int newA = 0, newB = 0;
int copy = A;
int multiplier = 1;
while (copy)
{
int temp = copy % 10;
if (temp == 5)
temp = 6;
newA += temp * multiplier;
multiplier *= 10;
copy /= 10;
}
copy = B;
multiplier = 1;
while (copy)
{
int temp = copy % 10;
if (temp == 5)
temp = 6;
newB += temp * multiplier;
multiplier *= 10;
copy /= 10;
}
return newA + newB;
}
//최소가 되려면 6이 모두 5가 되어야한다
int minSum(void)
{
int newA = 0, newB = 0;
int copy = A;
int multiplier = 1;
while (copy)
{
int temp = copy % 10;
if (temp == 6)
temp = 5;
newA += temp * multiplier;
multiplier *= 10;
copy /= 10;
}
copy = B;
multiplier = 1;
while (copy)
{
int temp = copy % 10;
if (temp == 6)
temp = 5;
newB += temp * multiplier;
multiplier *= 10;
copy /= 10;
}
return newA + newB;
}
int main(void)
{
cin >> A >> B;
cout << minSum() << " " << maxSum() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 15483번 최소 편집 (3) | 2018.05.10 |
---|---|
백준 1254번 팰린드롬 만들기 (0) | 2018.05.10 |
백준 2624번 동전 바꿔주기 (0) | 2018.05.10 |
백준 1328번 고층 빌딩 (0) | 2018.05.10 |
백준 1016번 제곱 ㄴㄴ 수 (0) | 2018.05.09 |