백준 알고리즘 2864

은영·2024년 6월 28일
0

백준 알고리즘 공부

목록 보기
26/26

처음 생각하기로는 간단하게 생각했다.

5도 6으로 보고, 6도 6으로 보았을 때 최댓값
5는 5, 6도 5로 보았을 때 최솟값

일 것이라고.

a, b = input().split()

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

positions_5_a = [i for i, char in enumerate(a) if char == '5']
max_a = list(a)
a = list(a)
for pos in positions_5_a:
  max_a[pos] = '6'

max_a = int(''.join(max_a))

positions_5_b = [i for i, char in enumerate(b) if char == '5']
max_b = list(b)
b = list(b)
for pos in positions_5_b:
  max_b[pos] = '6'

max_b = int(''.join(max_b))

max = max_a + max_b

positions_6_a = [i for i, char in enumerate(a) if char == '6']
min_a = list(a)
a = list(a)
for pos in positions_6_a:
  min_a[pos] = '5'

min_a = int(''.join(min_a))

positions_6_b = [i for i, char in enumerate(b) if char == '6']
min_b = list(b)
b = list(b)
for pos in positions_6_b:
  min_b[pos] = '5'

min_b = int(''.join(min_b))

min = min_a + min_b

print(min, max)

그렇게 작성한 코드는 위와 같다. 애초에 입력받는 수를 문자열로 저장하여 각 자리에서 5인 자리와 6인 자리를 확인한 후 값을 바꾸어 max,min을 계산한 것이다.

문자열을 한 자리씩 확인한다는 점에서 시간복잡도 문제에 걸릴 줄 알았는데 for문을 중첩해서 사용하는 것이 아니라 괜찮았던듯 하다.

0개의 댓글

관련 채용 정보