Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- TypeScript
- nodejs
- Nest.js
- class
- Queue
- JavaScript
- 게임
- game
- AWS
- flask
- MySQL
- cookie
- typeORM
- GIT
- react
- Python
- dfs
- jest
- Express
- mongoose
- MongoDB
- 자료구조
- 정렬
- nestjs
- OCR
- Dinosaur
- Sequelize
- 공룡게임
- Bull
Archives
- Today
- Total
포시코딩
곱하기 or 더하기 본문
728x90
문제
Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때,
왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어
결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오.
단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다.
풀이 1
def result(array):
answer = 0
while len(array) > 0:
target = array.pop(0)
plus = answer + target
multi = answer * target
if plus > multi:
answer = plus
else:
answer = multi
return answer
print("정답 = 728 현재 풀이 값 =", result([0,3,5,6,1,2,4]))
print("정답 = 8820 현재 풀이 값 =", result([3,2,1,5,9,7,4]))
print("정답 = 270 현재 풀이 값 =", result([1,1,1,3,3,2,5]))
풀이 2
def result(array):
multiply_sum = 0
for number in array:
if number <= 1 or multiply_sum <= 1:
multiply_sum += number
else:
multiply_sum *= number
return multiply_sum
print("정답 = 728 현재 풀이 값 =", result([0,3,5,6,1,2,4]))
print("정답 = 8820 현재 풀이 값 =", result([3,2,1,5,9,7,4]))
print("정답 = 270 현재 풀이 값 =", result([1,1,1,3,3,2,5]))
둘 다 O(N)의 시간 복잡도를 가짐으로 별 차이 없지만 풀이 2의 방법도 있다는걸 기억하자
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[신찬수] 괄호 맞추기 (0) | 2022.12.16 |
---|---|
[프로그래머스][Lv.0] 영어가 싫어요 (0) | 2022.12.15 |
[프로그래머스][Lv.0] 캐릭터의 좌표 (0) | 2022.12.14 |
소수 찾기, 소수의 개수 구하기 (0) | 2022.11.22 |
1부터 100까지 소수 구하기 (0) | 2018.07.27 |