문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력
첫째 줄에 상수의 대답을 출력한다.
예제 입력 1
734 893
예제 출력 1
437
예제 입력 2
221 231
예제 출력 2
132
예제 입력 3
839 237
예제 출력 3
938
코드
num_arr = list(input().split())
sorted_arr = []
for num in num_arr:
num_str = ''
for j in range(2, -1, -1): # j: 2, 1, 0임
num_str += num[j]
sorted_arr.append(int(num_str))
sorted_arr.sort(reverse=True)
print(sorted_arr[0])
코드 풀이
- 2개의 input을 공백을 기준으로 입력을 받고, 그것을 list로 감싼다.
- 반복을 돌리기 위해 list로 감쌌음
- sorted_arr을 list로 초기화 해준다.
- 나중에 거꾸로 변경된 num을 담기 위해 사용
- 2중 반복을 사용한다.
- num_str = ‘’ 을 초기화한다.
- 반복을 하며 string끼리 더하기 위함
- 두번째 반복에서는 거꾸로 반복을 돌기 위해 start, end, step을 지정해준다.
- 문제에 3자리 수가 나온다고 했으므로, 하드코딩으로 진행
- strat = 2, end = -1, step = -1 (end가 -1인 이유는 0까지 index를 뽑기 위함)
- num_str에 거꾸로 반복된 숫자를 더해주고 두번째 반복 종료 시 int로 변환후 sorted_arr에 넣음
- num_str = ‘’ 을 초기화한다.
- sorted_arr을 내림차순으로 정렬을함
- 가장 큰 수를 출력하기 위해 요소를 내림차순으로 정렬함
핵심 포인트
- input을 list에 담아서 처리
- 2개의 input값을 반복하면서 처리하기 위해 input을 list에 담았음
- 2중 for문의 2번째 반복에서 거꾸로 순회하며 수를 뽑아냄
- sorted_arr에 담긴 요소를 정렬
- 가장 큰 수를 뽑아내야 하므로 정렬을 해야함
- 오름차순이든 내림차순이든 상관은 없음
- 가장 큰 수를 뽑아내야 하므로 정렬을 해야함
'백준 코딩테스트 > 구현' 카테고리의 다른 글
10828번: 스택 (8 / 23) - 실버 4 (1) | 2024.10.08 |
---|---|
1316번: 그룹 단어 체커 (8 / 22) - 실버 5 (2) | 2024.10.08 |