일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 문제풀이
- 부르트포스
- 탐색
- C++
- sigmoid
- 프로그래머스
- NeuralNetwork
- ios
- Blockchain
- Greedy
- 실버쥐
- 백트래킹
- DeepLearning
- mysql
- 풀이
- 백준
- dp
- Algorithm
- 캡스톤정리
- 그래프
- Docker
- Swift
- Stack
- dfs
- 그리디
- Node.js
- 플로이드와샬
- BFS
- 알고리즘
- ReLU
- Today
- Total
개발아 담하자
[백준/C++] 1149번 : RGB 거리 풀이 본문
문제 1149 : RGB 거리
문제 링크 : https://www.acmicpc.net/problem/1149
1149번: RGB거리
RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이고, 첫 집과 마지막 집은 이웃이 아니다. 각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제
RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이고, 첫 집과 마지막 집은 이웃이 아니다.
각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 집의 수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 각 집을 빨강으로, 초록으로, 파랑으로 칠하는 비용이 주어진다. 비용은 1,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 모든 집을 칠하는 비용의 최솟값을 출력한다.
위 문제는 프로그래머스 땅따먹기(https://programmers.co.kr/learn/courses/30/lessons/12913) 와 비슷한 문제다.
전형적인 DP 문제 ‼️
열이 3개로 고정이므로 (R,G,B)
- R을 선택했을 경우(열 0을 선택했을 경우) 이 전의 G,B 칸 중(열 1,2) 최소를 선택해 저장한다.
- G을 선택했을 경우(열 1을 선택했을 경우) 이 전의 R,B 칸 중(열 0,2) 최소를 선택해 저장한다.
- B을 선택했을 경우(열 2을 선택했을 경우) 이 전의 R,G 칸 중(열 0,1) 최소를 선택해 저장한다.
문제 풀이
#include <iostream>
using namespace std;
int map[1001][1001];
int min(int a, int b){
return a < b ? a : b;
}
int main(void){
int n;
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<3; j++){
cin >> map[i][j];
}
}
for(int i=1; i<n; i++){
map[i][0] += min(map[i-1][1], map[i-1][2]);
map[i][1] += min(map[i-1][0], map[i-1][2]);
map[i][2] += min(map[i-1][0], map[i-1][1]);
}
cout << min(min(map[n-1][0], map[n-1][1]), map[n-1][2]) << endl;
return 0;
}
풀이 인증
'👩💻 알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준/C++] 11403번 : 경로 찾기 풀이 (0) | 2020.01.31 |
---|---|
[백준/C++] 1012번 : 유기농 배추 풀이 (0) | 2020.01.30 |
[백준/C++] 2579번 : 계단 오르기 풀이 (0) | 2020.01.27 |
[백준/C++] 1003번 : 피보나치 함수 풀이 (0) | 2020.01.27 |
[백준/C++]9095번 : 1, 2, 3 더하기 풀이 (0) | 2020.01.26 |