풀이
- 마땅한 아이디어가 떠오르지않아 if문으로 접근하였다.
- 점화식(DP)로 접근하면 더 깔끔하고 효율높은 코드를 만들 수 있지 않을까싶다.
코드
def solve(index:int, nums: list):
result = 0
if nums[0] > nums[1] and nums[0] > nums[2]:
result += nums[0] - max(nums[1], nums[2])
if max(nums[0], nums[1], nums[2], nums[3]) == nums[1]:
result += nums[1] - max(nums[0], nums[2], nums[3])
if max(nums[-2], nums[-1], nums[-3], nums[-4]) == nums[-2]:
result += nums[-2] - max(nums[-1], nums[-3], nums[-4])
if nums[-1] > nums[-2] and nums[-1] > nums[-3]:
result += nums[-1] - max(nums[-2], nums[-3])
for x in range(2, len(nums)-2):
if max(nums[x], nums[x-1], nums[x-2], nums[x+1], nums[x+2]) == nums[x]:
result += nums[x] - max(nums[x-1], nums[x-2], nums[x+1], nums[x+2])
return '#' + str(index), result
if __name__ == '__main__':
for index in range(1, 10+1):
n = int(input())
nums = list(map(int, input().split()))
print(*solve(index, nums))
결과
출처 & 깃허브
sw expert academy 1206. view
github