[python] 곱하기 혹은 더하기

yeco_ob·2023년 1월 30일
0

<문제>

각 자리가 0부터 9로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 하나씩 모든 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단 모든 연산은 왼쪽부터 순서대로 이루어진다고 가정합니다.

<제출>

s = input() #문자열 입력 받기

result = int(s[0]) #연산하는 첫 번째 문자를 정수로 변경해 대입

for i in range(1, len(s)): #두 번째 수(num)부터 비교하며 연산
    num = int(s[i])
    if num <= 1 or result <= 1: #1 이하라면 두 정수 더하기
        result += num
    else: #2이상이면 두 정수 곱하기
        result *= num

print(result)

<코드 설명>

이 문제는 연산되는 두 수 중 하나라도 0, 1 이하라면 더하고, 두 수 모두 2 이상이면 곱하면 됩니다. 이렇게 매 순간 더 큰 수를 만들어주는 게 그리디 알고리즘, 탐욕 알고리즘입니다.

💡문자열을 정수형 리스트로 바꿔주기
💡result 변수를 전역 변수로 선언해 매 연산마다 값을 바꿔준다.

<메모>

리스트 내에서 연산 값을 원소에 어떻게 대입할지 고민했는데 너무 복잡하게 생각했다. 외부에서 결과 값 변수를 만들고 리스트에서 값을 비교하며 연산 결과를 변수에 대입만 하면 되는데...? 간단하게 생각하는 게 안 간단함

0개의 댓글