YoungSoo

백준 - 참외밭(2477 파이썬 풀이) 본문

코딩테스트

백준 - 참외밭(2477 파이썬 풀이)

YoungSooSoo 2022. 12. 19. 15:34

이번 문제는 참외밭의 크기를 구하는 문제인데 배열에 이동하는 거리를 하나씩 대입하여 가장 긴 가로 변의 인덱스의 +1, -21 그리고 가장 긴 세로 변의 인덱스의 +1, -1을 해서 풀었는데 이 방식에서 예외처리를 해주지 않아 오류가 났다.

import sys
input = sys.stdin.readline

k=int(input())
arr = []
for i in range(6):
	x, y = map(int, input().split())
	arr.append(y)

mw = max(arr)
mh = arr[arr.index(mw)-1] if arr[arr.index(mw)-1] > arr[arr.index(mw)+1] else arr[arr.index(mw)+1] 

nw = abs(arr[arr.index(mw)-1]-arr[arr.index(mw)+1])
nh = abs(arr[arr.index(mh)-1]-arr[arr.index(mh)+1])

result = ((mw * mh) - (nw * nh)) * k
print(result)

이 풀이에서 각각 인덱스-1과 인덱스+1이 배열의 범위 밖이면 안 되기 때문에 예외처리를 반드시 해주어야 한다.

import sys
input = sys.stdin.readline

k=int(input())

arr = []
for i in range(6):
	x, y = map(int, input().split())
	arr.append(y)

mw = max(arr)
mh = arr[(arr.index(mw)-1)%6] if arr[(arr.index(mw)-1)%6] > arr[(arr.index(mw)+1)%6] else arr[(arr.index(mw)+1)%6] 

nw = abs(arr[(arr.index(mw)-1)%6]-arr[(arr.index(mw)+1)%6])
nh = abs(arr[(arr.index(mh)-1)%6]-arr[(arr.index(mh)+1)%6])

result = ((mw * mh) - (nw * nh)) * k
print(result)

 그래서 인덱스의 값에 %6을 해주어 리스트의 범위 밖으로 나가지 않도록 예외처리를 해주었다.