본문 바로가기
Algorithm/Python

[이코테] 곱하기 혹은 더하기

by _sweep 2022. 3. 9.

이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다.

 

 

 

 

📋 문제

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

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

 

예를 들어 02984라는 문자열이 주어지면 만들 수 있는 가장 큰 수는 \(((((0+2)\times9)\times8)\times4) = 576\) 이다.

또한 만들 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어진다.

 

 

👉 입력

첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어진다. (1<= S의 길이 <= 20)

 

 

👈 출력

첫째 줄에 만들 수 있는 가장 큰 수를 출력한다.

 

 

📝 풀이

S = input()
answer = int(S[0])

for i in S[1:]:
  num = int(i)
  if num <= 1 or answer <= 1:
    answer += num
  else:
    answer *= num
print(answer)

 

주어진 숫자가 0 또는 1일 경우에는 곱하는 것보다 더하는 것이 더 큰 숫자를 얻을 수 있다.

answer에 S의 첫 번째 숫자를 넣고 for문에서 그 이후 숫자들을 순회한다.

이때 해당하는 숫자가 0 또는 1이거나 answer에 담긴 숫자가 0 또는 1이라면 answer에 해당 숫자를 더하고 2 이상의 수이면 곱한다.

 

 

🔍 참조

이것이 취업을 위한 코딩 테스트다 with 파이썬 (한빛미디어, 나동빈)

 

 

 

 

 

'Algorithm > Python' 카테고리의 다른 글

[백준 1026번] 보물  (0) 2022.03.10
[이코테] 만들 수 없는 금액  (0) 2022.03.10
[백준 1439번] 뒤집기  (0) 2022.03.09
[이코테] 모험가 길드  (0) 2022.03.09
[백준 18406번] 럭키 스트레이트  (0) 2022.03.09

댓글