컴퓨터는 잘못이 없다..

[알고리즘]그리디_곱하기 혹은 더하기(파이썬 문자를 숫자로 바꾸는 방법) 본문

공부/알고리즘(파이썬)

[알고리즘]그리디_곱하기 혹은 더하기(파이썬 문자를 숫자로 바꾸는 방법)

도토리까꿍v 2020. 11. 17. 20:51
Contents 접기

[곱하기 혹은 더하기 문제 설명]

-난이도 : ★☆

-풀이시간 : 30분

-시간 제한 : 1초

-메모리 제한 : 128MB

-기출 : Facebook 인터뷰

-출처 : 이것이 코딩 테스트다 p.312

 

-문제 : 각 자리의 숫자(0부터9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요.

단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다.

예를들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 576입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다. 

 

입력조건 : 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다.

출력조건 : 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다. 

 

-입력예시1

02984

-출력예시1
576
-입력예시2
567
-출력예시2
210

 

 

[곱하기 혹은 더하기 답안1]

#숫자로 된 문자열 입력받기
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)

 

[답안1 설명]

0이나 1일 경우는 +하는 것이 최대의 수를 만들 수 있다!!

그 외에는 *를 해주는 것이 최대의 수를 만들 수 있다.

Comments