이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다.
📋 문제
각 자리가 숫자(0-9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
단 +보다 x를 먼저 계산하는 일반적인 방식과는 달리 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
예를 들어 02984라는 문자열이 주어지면 만들 수 있는 가장 큰 수는 \(((((0+2)\times9)\times8)\times4) = 576\) 이다.
또한 만들 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어진다.
👉 입력
첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어진다. (1<= S의 길이 <= 20)
👈 출력
첫째 줄에 만들 수 있는 가장 큰 수를 출력한다.
📝 풀이
S = input()
answer = int(S[0])
for i in S[1:]:
num = int(i)
if num <= 1 or answer <= 1:
answer += num
else:
answer *= num
print(answer)
주어진 숫자가 0 또는 1일 경우에는 곱하는 것보다 더하는 것이 더 큰 숫자를 얻을 수 있다.
answer에 S의 첫 번째 숫자를 넣고 for문에서 그 이후 숫자들을 순회한다.
이때 해당하는 숫자가 0 또는 1이거나 answer에 담긴 숫자가 0 또는 1이라면 answer에 해당 숫자를 더하고 2 이상의 수이면 곱한다.
🔍 참조
이것이 취업을 위한 코딩 테스트다 with 파이썬 (한빛미디어, 나동빈)
'Algorithm > Python' 카테고리의 다른 글
[백준 1026번] 보물 (0) | 2022.03.10 |
---|---|
[이코테] 만들 수 없는 금액 (0) | 2022.03.10 |
[백준 1439번] 뒤집기 (0) | 2022.03.09 |
[이코테] 모험가 길드 (0) | 2022.03.09 |
[백준 18406번] 럭키 스트레이트 (0) | 2022.03.09 |
댓글