컴공생의 다이어리
곱하기 혹은 더하기 본문
질문
각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '*' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 단, +보다 *를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
구현한 코드
아래는 파이썬으로 구현한 코드이다.
data=input()
result=int(data[0])
for i in range(1,len(data)):
if int(data[i])<=1 or result<=1:
result+=int(data[i])
else:
result*=int(data[i])
print(result)
아래는 c/c++으로 구현한 코드이다.
#include<iostream>
#include<algorithm>
int main() {
std::string data;
int result = 0;
std::cin >> data;
result = data[0] - '0';
for (int i = 1; i < data.length(); i++) {
if ((data[i]-'0') <= 1 || result <= 1)
result += (data[i]-'0');
else
result *= (data[i]-'0');
}
std::cout << result;
return 0;
}
www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791162243077
728x90
'Development > Algorithm & Coding Test' 카테고리의 다른 글
만들 수 없는 금액 (0) | 2020.12.18 |
---|---|
문자열 뒤집기 (0) | 2020.12.18 |
모험가 길드 (0) | 2020.12.18 |
1이 될 때까지 (0) | 2020.12.17 |
숫자 카드 게임 (0) | 2020.12.17 |
Comments