728x90
반응형
곱하기 혹은 더하기
각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다.
예를 들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 ((((0+2)x9)x8)x4) = 576입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다.
입력조건
- 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다.(1<=S의 길이<=20)
출력조건
- 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다.
입력
02984
출력
576
풀이
먼저 문자열의 길이가 1일수도 있으니 그 경우 바로 반환하는 코드를 만들어주고
반복문으로 현재 만들어진 수와 연산할 수에 0이나1이 있으면 +, 아니면 *를 연산하여 반환하는 코드를 작성해준다
코드
s = list(map(int,input()))
result = s[0]
for i in range(1,len(s)):
if result == 0 or result==1 or s[i] == 0 or s[i] == 1:
result += s[i]
else:
result *= s[i]
print(result)
728x90
반응형
'Algorithm > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
(유형별 기출/그리디) 만들 수 없는 금액 (0) | 2023.05.25 |
---|---|
(유형별 기출/그리디) 문자열 뒤집기 (0) | 2023.05.25 |
(유형별 기출/그리디) 모험가 길드 (0) | 2023.05.25 |
정렬 간단 정리 (정렬/이론) (0) | 2023.04.22 |
특정 거리의 도시 찾기 (DFS,BFS/백준 18352번) (0) | 2023.04.21 |