728x90
https://school.programmers.co.kr/learn/courses/30/lessons/214289
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
너무너무 어려웠는데 GPT 선생님도 명쾌한 답을 주시지 않았다 문제 해설보고 풀었는데.. 다음에 꼭 다시 풀어보기🤙
def solution(temperature, t1, t2, a, b, onboard):
k = 1000*100
t1 += 10
t2 += 10
temperature += 10
dp = [[k for _ in range(51)] for _ in range(len(onboard))]
# 초기값
dp[0][temperature] = 0
flag = 0
# 조건: temperature는 t1~t2 범위 밖의 값이다
if temperature > t2:
flag = -1
elif temperature < t1:
flag = 1
for i in range(1,len(onboard)):
for j in range(51):
temp = [k]
if (onboard[i] == 1 and t1 <= j <= t2) or onboard[i] == 0:
# 에어컨 ON 희망온도 (!=)
if 0 <= j-flag <=50:
temp.append(dp[i-1][j-flag] + a)
# 에어컨 ON 희망온도 (==)
if t1 <= j <= t2:
temp.append(dp[i-1][j] + b)
# 에어컨 OFF 실외온도 (!=)
if 0 <= j+flag <=50:
temp.append(dp[i-1][j+flag])
# 에어컨 OFF 실외온도 (==)
if j == temperature:
temp.append(dp[i-1][j])
dp[i][j] = min(temp)
answer = min(dp[len(onboard)-1])
return answer
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 상담원 인원(조합, heapq) LV3 (0) | 2025.03.10 |
---|---|
[프로그래머스] 미로탈출 (BFS) LV2 (0) | 2025.03.03 |
[해시] 프로그래머스: 완주하지 못한 선수(LV1) (0) | 2024.12.02 |
[해시] 프로그래머스: 포켓몬(LV1) (0) | 2024.12.02 |
위상 정렬(Topology Sort) (0) | 2024.10.28 |