알고리즘 공부/백준

백준 2864번: 5와 6의 차이 (파이썬)

뚜써 2022. 1. 18. 19:06

https://www.acmicpc.net/problem/2864

 

2864번: 5와 6의 차이

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

www.acmicpc.net

 

문제


상근이는 2863번에서 표를 너무 열심히 돌린 나머지 5와 6을 헷갈리기 시작했다.

상근이가 숫자 5를 볼 때, 5로 볼 때도 있지만, 6으로 잘못 볼 수도 있고, 6을 볼 때는, 6으로 볼 때도 있지만, 5로 잘못 볼 수도 있다.

두 수 A와 B가 주어졌을 때, 상근이는 이 두 수를 더하려고 한다. 이때, 상근이가 구할 수 있는 두 수의 가능한 합 중, 최솟값과 최댓값을 구해 출력하는 프로그램을 작성하시오.

입력


첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

출력


첫째 줄에 상근이가 구할 수 있는 두 수의 합 중 최솟값과 최댓값을 출력한다.

 

풀이

 

두 수의 합이 최소인 경우는 두 수에 있는 6이 모두 5로 바뀐 경우다.

두 수의 합이 최대인 경우는 두 수에 있는 5가 모두 6으로 바뀐 경우다.

이에 알맞게 코드를 작성해 주었다.

 

소스 코드

 

a, b = input().split()

min = int(a) + int(b)
max = int(a) + int(b)

for i in range(len(a)):
    if a[i] == '5':
        max += 10**(len(a)-i-1)
    if a[i] == '6':
        min -= 10**(len(a)-i-1)

for i in range(len(b)):
    if b[i] == '5':
        max += 10**(len(b)-i-1)
    if b[i] == '6':
        min -= 10**(len(b)-i-1)

print(min, max)