접근 방법#

어떤 두 수의 합이 최소가 되려면 두 수가 최소가 되어야 한다.
예를 들어 어떤 두 자연수의 합이 최소가 되려면 두 수가 자연수 범위 내에서 가장 작을 때, 즉 1일 때 그 합이 2로 최소가 된다.

즉, 주어진 두 수를 최소로 만들 수 있다면 그때의 합이 가능한 합이 최솟값이 되고 주어진 두 수를 최대로 만들 수 있다면 그때의 합이 가능한 최댓값이 된다.

문제에서 주어진 수를 조작할 수 있는 방법은 5와 6을 5 또는 6으로 바꾸는 것이다.

이때 각 자릿수가 작은 편이 전체 수를 더 작게 만드는 방법이므로 모든 5와 6을 5로 바꾸면 그 수를 최소로 만들 수 있다.
같은 방법으로 모든 5와 6을 6으로 바꾸면 그 수를 최대로 만들 수 있다.

이제 바꾼 두 수를 더하면 각각 두 수의 합의 최솟값과 최댓값이 된다.

구현#

a, b = input().split(' ')

a = a.replace('5', 'x')
b = b.replace('5', 'x')

a = a.replace('6', 'x')
b = b.replace('6', 'x')

x = int(a.replace('x', '5')) + int(b.replace('x', '5'))
y = int(a.replace('x', '6')) + int(b.replace('x', '6'))

print(x, y)

주어진 문자열에서 56을 찾아 임의의 문자로 치환해준다.
이렇게 하면 후에 그 수를 다른 수로 바꾸기 용이해진다.

먼저 최솟값은 치환한 문자를 다시 5로 바꿔주어 더해주면 된다.
같은 방법으로 최댓값은 치환한 문자를 다시 6으로 바꾸어 더해주면 된다.

외부 링크#

5와 6의 차이 | BOJ
채점 결과 | BOJ