안경잡이 구루루

백준 2864 (5와 6의 차이) [Python/파이썬] [Greedy/그리디] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 2864 (5와 6의 차이) [Python/파이썬] [Greedy/그리디]

구루루(gururu) 2023. 9. 17. 16:33
반응형

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

 

2864번: 5와 6의 차이

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

www.acmicpc.net

 


나:

a,b= input().split()

table = str.maketrans('6','5')
a= a.translate(table)
b= b.translate(table)
print(int(a)+int(b),end=' ')

table = str.maketrans('5','6')
a= a.translate(table)
b= b.translate(table)
print(int(a)+int(b))

완성된 코드는 위와 같다,

 

 

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

table = str.maketrans('6','5')
a= a.translate(table)
b= b.translate(table)
print(int(a)+int(b),end=' ')

우선 나는 문자열 조작방법인 replace를 알고 있었지만 다른 방식으로 문제를 풀어보고 싶었다, 그러던 와중 다른 문자열 조작방식인 str. maketrans() 함수를 알게 되었고 이를 활용해서 문제를 풀고자 했다.

문제는 5와 6을 잘못 봐서 서로 반대로 썼을 경우를 구현해야하고 최솟값을 먼저 출력해야 하기 때문에 바꿀문자에는 6, 새문자에는 5를 넣어 테이블을 만들고

각 입력값 a, b 에 이를 적용시켰다. 이때 input() 은 문자열로 받기 때문에 합을 구할때 int 정수형으로 바꿔서 출력한다. 그리고 공백을 기준으로 출력해야 하기 때문에 end 를 이용해 공백을 구현했다.

 +) str.maketrans 사용 방법

str.maketrans('바꿀문자', '새문자')변환 테이블을 만듭니다. 그다음에 translate(테이블)을 사용

ex)

>>> table = str.maketrans('aeiou', '12345')
>>> 'apple'.translate(table)
'1ppl2'

 

 

table = str.maketrans('5','6')
a= a.translate(table)
b= b.translate(table)
print(int(a)+int(b))

다음으로 최댓값을 출력하는 경우를 구현하기 위해 위의 경우와 반대로 바꿀문자에 5, 새문자에 6을 넣어 테이블을 만듦.

이후 각 입력값 a,b 에 이를 적용시켰고 위와 똑같이 input() 은 문자열로 받기 때문에 합을 구할때 int 정수형으로 바꿔서 계산하며 출력한다.


다른사람

a, b = map(int, input().split())

min_sum = int(str(a).replace('6', '5')) + int(str(b).replace('6', '5'))
max_sum = int(str(a).replace('5', '6')) + int(str(b).replace('5', '6'))

print(min_sum, max_sum)

 완성된 코드는 위와 같다.

replace() 함수를 이용해 구현한 방식 또한 참고할 필요가 있다고 생각해 가져왔다.

반응형