난이도 ●○○ | 풀이 시간 : 30분 | 시간 제한 : 1초 | 메모리 제한 : 128MB | 기출 : Facebook 인터뷰
문제
- 각 자리가 숫자(0~9)로만 이루어진 문자열 S가 주어진다.
- 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 만들 수 있는 가장 큰 수를 구하여라.
- 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
입력조건
- 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어진다.(1<=S의 길이<=20)
출력조건
- 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력한다.
입력예시
02984
출력예시
576
아이디어
- 어떤 수든 0을 곱하면 0이 되고, 1을 곱하면 원래값이 그대로 유지되므로 0이나 1일 때는 더하기를 하는 게 이득이다.
코드
s = list(input())
result = int(s[0])
for i in range(1,len(s)):
num = int(s[i])
# 맨 처음값을 result에 저장해두는데
# 이 값이 0이나 1이라면 다음값이 얼마나 크든 더하기 연산을 해줘야 한다는 점을 주의.
if num<=1 or result<=1:
result += num
else:
result *= num
print(result)
'Algorithm > [이코테] 알고리즘 유형별 기출문제' 카테고리의 다른 글
[이코테] 구현 - 럭키 스트레이트 python (0) | 2023.10.23 |
---|---|
[이코테] 그리디 - 볼링공 고르기 python (0) | 2023.10.23 |
[이코테] 그리디 - 만들 수 없는 금액 python (0) | 2023.10.23 |
[이코테] 그리디 - 문자열 뒤집기 python (1) | 2023.10.23 |
[이코테] 그리디 - 모험가 길드 python (1) | 2023.10.22 |