곱하기 혹은 더하기

INGBEEN·2021년 10월 30일
0

알고리즘 문제

목록 보기
3/20

문제설명

각 자리가 0~9인 숫자로만 이루어진 문자열 S가 주어졌을 때 왼쪽부터 오른쪽으로 숫자 사이에 '+' 혹은 'x'만 써서 제일 큰 숫자 만들기

<제한 사항>
시간 제한 : 1 sec
메모리 제한 : 128 MB

<입력>
문자열 S가 주어진다. (1 <= len(S) <= 20)

<출력>
가장 큰 수를 출력한다

<예시>
02984
576

567
210

1212
8


나의 풀이

len(S) = 20 -> 성공

arr = list(map(int, input()))
result = 0

for i in arr:
    if result * i >= result + i:
        result *= i
    else:
        result += i

print(result)  

책 풀이

data = input()

result = int(data[0])

for i in range(1, len(data)):
    num = int(data[i])
    if num <= 1 or result <= 1:
        result += num
    else:
        result *= num
print(result)

느낀 점

간단한 문제. 책 풀이와 비교하면 나는 배열을 쓴 것, 첫 번째 숫자는 연산이 따로 필요없는데 연산한 점이 다르다.

출처 : 이것이 취업을 위한 코딩테스트다 with 파이썬 - 나동빈

profile
No Excuses

0개의 댓글

관련 채용 정보