#Algorithm
문제 번호
1459번(S3)
알고리즘 + 이론
그리디 알고리즘
정답 코드
# 1459번
# 0 < X,Y <= 100000000
# 0 < W,S <= 10000
# 2초 128MB
# W의 2배보다 S가 작거나 같으면 대각선으로 이동하는게 이득
# 2배보다 크면 직선으로 이동하는게 이득
X ,Y, W, S = map(int, input().split())
temp = 0
if (X+Y) % 2 == 0:
temp = max(X, Y) * S
else:
temp = (max(X, Y) -1) * S + W
result = [(X+Y)*W,min(X, Y) * S + abs(X-Y)*W,temp]
print(min(result))
느낀점 & 피드백
대각선이 작으면 무조건 대각선으로 다 갈 수 있을 줄 알았지만 합이 홀수일때는 직선으로 한 번은 가야한다는 예외처리를 하지 못했다가 나중에 깨달았다. 좀 더 꼼꼼히 생각할 필요가 있는 것 같다.
이 글이 도움이 되셨나요?