컴공생의 다이어리

곱하기 혹은 더하기 본문

Development/Algorithm & Coding Test

곱하기 혹은 더하기

컴공 K 2020. 12. 18. 18:27

질문

각 자리가 숫자(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

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 교보문고

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제

www.kyobobook.co.kr

 

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