똥그래미 코딩공장
백준 1149번(RGB거리) 파이썬 본문
https://www.acmicpc.net/problem/1149
1149번: RGB거리
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
하... 진짜 너무 어렵게 생각을 했다.
모든 알고리즘 문제가 그렇겠지만 어떻게 푸는지 이해는 갔지만 코드로 표현한다는게 진짜 실력인거 같다.
이 문제에서 팍 느꼈다.
문제를 풀때에는 고정관념에서 벗어나야한다. 어떠한 문제를 보고 이런 문제는 이렇게 풀면되지라는 공식처럼 외우고 있다간 조금만 변형된 문제 맞닥뜨리면 그 문제를 풀 수 없게된다. 심지어 그 문제가 더 쉬운 문제라 한들 말이다.
고정관념에서 벗어나자
n = int(input())
house = []
for _ in range(n):
house.append(list(map(int,input().split())))
for i in range(1,n):
# 0번째 위치일경우 위의 리스트에서 첫번째 두번째 값중 낮은 값을 선택해 더해서 저장해준다
house[i][0] = min(house[i-1][1],house[i-1][2])+house[i][0]
# 1번째 위치일경우 위의 리스트에서 0번째 두번째 값중 낮은 값을 선택해 더해서 저장해준다
house[i][1] = min(house[i-1][0],house[i-1][2])+house[i][1]
# 2번째 위치일경우 위의 리스트에서 0번째 첫번째 값중 낮은 값을 선택해 더해서 저장해준다
house[i][2] = min(house[i-1][0],house[i-1][1])+house[i][2]
print(min(house[n-1])) # 마지막 행에서 제일 낮은 값을 출력해준다.'Algorithm' 카테고리의 다른 글
| 백준 6603번(로또) 파이썬 (0) | 2023.02.17 |
|---|---|
| 백준 11403번(경로찾기) 파이썬 (0) | 2023.02.12 |
| 백준 2156번(포도주 시식) 파이썬 (0) | 2023.02.08 |
| 백준 14888번(연산자 끼워넣기) 파이썬 (0) | 2023.02.07 |
| 백준 2512번(예산) 파이썬 (0) | 2023.02.06 |