|
| 1 | +# [level 4] 사칙연산 - 1843 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/1843) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 54.7 MB, 시간: 26.81 ms |
| 8 | + |
| 9 | +### 구분 |
| 10 | + |
| 11 | +코딩테스트 연습 > 동적계획법(Dynamic Programming) |
| 12 | + |
| 13 | +### 채점결과 |
| 14 | + |
| 15 | +정확성: 55.6<br/>효율성: 44.4<br/>합계: 100.0 / 100.0 |
| 16 | + |
| 17 | +### 제출 일자 |
| 18 | + |
| 19 | +2025년 09월 18일 11:03:48 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>사칙연산에서 더하기(+)는 결합법칙이 성립하지만, 빼기(-)는 결합법칙이 성립하지 않습니다.<br> |
| 24 | +예를 들어 식 1 - 5 - 3은 연산 순서에 따라 다음과 같이 다른 결과를 가집니다.</p> |
| 25 | + |
| 26 | +<ul> |
| 27 | +<li>((1 - 5) - 3) = -7</li> |
| 28 | +<li>(1 - (5 - 3)) = -1</li> |
| 29 | +</ul> |
| 30 | + |
| 31 | +<p>위 예시와 같이 뺄셈은 연산 순서에 따라 그 결과가 바뀔 수 있습니다.<br> |
| 32 | +또 다른 예로 식 1 - 3 + 5 - 8은 연산 순서에 따라 다음과 같이 5가지 결과가 나옵니다.</p> |
| 33 | + |
| 34 | +<ul> |
| 35 | +<li>(((1 - 3) + 5) - 8) = -5</li> |
| 36 | +<li>((1 - (3 + 5)) - 8) = -15</li> |
| 37 | +<li>(1 - ((3 + 5) - 8)) = 1</li> |
| 38 | +<li>(1 - (3 + (5 - 8))) = 1</li> |
| 39 | +<li>((1 - 3) + (5 - 8)) = -5</li> |
| 40 | +</ul> |
| 41 | + |
| 42 | +<p>위와 같이 서로 다른 연산 순서의 계산 결과는 <code>[-15, -5, -5, 1, 1]</code>이 되며, 이중 최댓값은 1입니다.<br> |
| 43 | +문자열 형태의 숫자와, 더하기 기호("+"), 뺄셈 기호("-")가 들어있는 배열 arr가 매개변수로 주어질 때, 서로 다른 연산순서의 계산 결과 중 최댓값을 return 하도록 solution 함수를 완성해 주세요.</p> |
| 44 | + |
| 45 | +<h5>제한 사항</h5> |
| 46 | + |
| 47 | +<ul> |
| 48 | +<li>arr는 두 연산자 "+", "-" 와 숫자가 들어있는 배열이며, 길이는 3 이상 201 이하 입니다. |
| 49 | + |
| 50 | +<ul> |
| 51 | +<li>arr의 길이는 항상 홀수입니다.</li> |
| 52 | +<li>arr에 들어있는 숫자의 개수는 2개 이상 101개 이하이며, 연산자의 개수는 (숫자의 개수) -1 입니다.</li> |
| 53 | +<li>숫자는 1 이상 1,000 이하의 자연수가 문자열 형태로 들어있습니다.. (ex : "456")</li> |
| 54 | +</ul></li> |
| 55 | +<li>배열의 첫 번째 원소와 마지막 원소는 반드시 숫자이며, 숫자와 연산자가 항상 번갈아가며 들어있습니다.</li> |
| 56 | +</ul> |
| 57 | + |
| 58 | +<hr> |
| 59 | + |
| 60 | +<h5>입출력 예</h5> |
| 61 | +<table class="table"> |
| 62 | + <thead><tr> |
| 63 | +<th>arr</th> |
| 64 | +<th>result</th> |
| 65 | +</tr> |
| 66 | +</thead> |
| 67 | + <tbody><tr> |
| 68 | +<td>["1", "-", "3", "+", "5", "-", "8"]</td> |
| 69 | +<td>1</td> |
| 70 | +</tr> |
| 71 | +<tr> |
| 72 | +<td>["5", "-", "3", "+", "1", "+", "2", "-", "4"]</td> |
| 73 | +<td>3</td> |
| 74 | +</tr> |
| 75 | +</tbody> |
| 76 | + </table> |
| 77 | +<h5>입출력 예시</h5> |
| 78 | + |
| 79 | +<p>입출력 예 #1<br> |
| 80 | +위의 예시와 같이 (1-(3+(5-8))) = 1 입니다.</p> |
| 81 | + |
| 82 | +<p>입출력 예 #2<br> |
| 83 | +(5-(3+((1+2)-4))) = 3 입니다.</p> |
| 84 | + |
| 85 | + |
| 86 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments