11-2. 곱하기 혹은 더하기 Python3

Yelim Kim·2022년 9월 8일
0

Python Algorithm Interview

목록 보기
33/36

Problem

각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 만들 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
(단, + 보다 x를 먼저 계산하는 일반적인 방식과 달리, 모든 연산은 왼쪽부터 차례대로 이루어진다고 가정)

입력예시

input

02984

output

576

input

567

output

210

My Code

s = int(input())
sum = 0

for i in map(int, str(s)):
    if i == 1 or 0:
        sum += i
    else:
        if sum == 0:
            sum = 1
        sum *= i
print(sum)

Review

처음에 어떤 수를 더해야 하고 어떤 수를 곱해야 할까 생각해봤는데
0 아니면 1은 더해야 하고 나머지는 곱해야 한다는 사실을 깨닳음 !

먼저 처음에 받는 형태가 숫자열이다 보니까 list로 바꿔줄까 했었는데
그냥 for loop으로 한 글자씩 확인하는게 편하다 싶어 이렇게 했다.
그리고 sort부분도 필요없게 되서 지움. 만약 list를 sort처리 했다면 아래에 나올 0일까 1일까 if문은 없어져 좀 더 빨랐을수도
만약 i가 0또는 1이면 sum값에 더해주고 아니면 다 곱해주는 코드인데,
문제는 숫자열에서 1이 없으면 sum은 그대로 0이 되어 0에 어떤 수를 곱해봤자 결과는 항상 0이 됐음
그래서 0인지 1인지 판별 후, sum이 그대로 0인 경우, sum = 1을 세워 1에서 곱할 수 있게 만듬

답지 보니까 나랑 비슷해서 만족

오늘은 브레인스토밍이랑 실제 코드랑 조금 다르다.

profile
뜬금없지만 세계여행이 꿈입니다.

0개의 댓글