문제설명
아래와 같이 벽이 여러 개 있을 때, 벽 2개를 제외한 나머지 벽을 제거하여 물을 최대한 담으려 합니다. 물은 `두 벽 사이의 거리 x 두 벽 중 낮은 벽의 높이`리터 만큼 담을 수 있으며, 두 벽의 거리는 두 벽의 위치 차이입니다.
모든 벽의 위치와 높이를 담은 2차원 리스트 walls가 매개변수로 주어질 때, 물을 최대 몇 리터나 담을 수 있는지 return 하도록 solution 함수를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _**한 줄**_만 수정해야 합니다.
매개변수 설명
모든 벽의 위치와 높이를 담은 2차원 리스트 walls가 solution 함수의 매개변수로 주어집니다.
* walls는 길이가 3이상 100이하인 2차원 리스트입니다.
* walls의 각 원소는 [벽의 위치, 벽의 높이] 이고, 벽의 위치를 기준으로 오름차순으로 정렬되어 있습니다.
* 벽의 위치는 1 이상 100 이하입니다.
* 벽의 높이는 1 이상 100 이하입니다.
return 값 설명
물을 최대 몇 리터나 담을 수 있는지 return 합니다.
예시
| walls | return |
|------------------------------------------|--------|
| [[1, 4], [2, 6], [3, 5], [5, 3], [6, 2]] | 12 |
예시 설명
아래와 같이 벽을 남겼을 때 물을 최대로 담을 수 있습니다. 이 때 최대 12리터를 담을 수 있습니다.
문제 코드
def solution(walls):
answer = 0
for i in range(len(walls)):
for j in range(i+1, len(walls)):
area = 0
if walls[i][1] > walls[j][1]:
area = walls[i][1] * (walls[j][0] - walls[i][0])
else:
area = walls[j][1] * (walls[j][0] - walls[i][0])
if answer < area:
answer = area
return answer
풀이
def solution(walls):
answer = 0
for i in range(len(walls)):
for j in range(i+1, len(walls)):
area = 0
# 물을 담을 수 있는 양은 '두 벽 사이의 거리 x 두 벽 중 낮은 벽의 높이'
if walls[i][1] < walls[j][1]:
area = walls[i][1] * (walls[j][0] - walls[i][0])
else:
area = walls[j][1] * (walls[j][0] - walls[i][0])
if answer < area:
answer = area
return answer
댓글