- 처음엔 브루트포스 알고리즘으로 생각해서 2차원 배열을 그만큼 만들어줘야 했나 했는데 범위를 보고 이건 브루트포스 알고리즘이 아닌 다른 수학적 방법을 이용해야되겠다고 생각했다. 동서 방향의 밭경계 길이 최댓값과 남북 방향의 밭경계 길이 최댓값을 곱해 전체 밭 면적을 구해준다. 그 다음 동서/남북 방향의 밭경계 길이 최솟값을 구해 전체 밭 면적에서 빼주면 해당 참외밭의 면적이 나온다.
import sys
input = sys.stdin.readline
K = int(input().strip())
li = []
for _ in range(6):
direction, val = map(int, input().strip().split())
li.append([direction, val])
width = []
height = []
for i in li:
if i[0] == 3 or i[0] == 4:
height.append(i[1])
elif i[0] == 1 or i[0] == 2:
width.append(i[1])
lownum = []
for i in range(6):
if li[i][0] == li[(i+2) % 6][0]:
lownum.append(li[(i+1) % 6][1])
print((max(width) * max(height) - lownum[0] * lownum[1]) * K)
📌 잘못된 코드(IndexError)
import sys
input = sys.stdin.readline
K = int(input().strip())
li = []
for _ in range(6):
direction, val = map(int, input().strip().split())
li.append([direction, val])
width = []
height = []
for i in li:
if i[0] == 3 or i[0] == 4:
height.append(i[1])
elif i[0] == 1 or i[0] == 2:
width.append(i[1])
lownum = []
for i in range(4):
if li[i][0] == li[i+2][0]:
lownum.append(li[i+1][1])
print((max(width) * max(height) - lownum[0] * lownum[1]) * K)
입력
7
3 20
1 100
4 50
2 160
3 30
1 60
출력
IndexError
append
될 수 있는 값이 없어 리스트가 비어있게 된다. 그렇기에 IndexError
가 출력되는 것이다.