반응형
www.acmicpc.net/problem/1149
RGB거리 성공분류
시간 제한메모리 제한제출정답맞은 사람정답 비율
0.5 초 (추가 시간 없음) | 128 MB | 53216 | 25296 | 18895 | 47.952% |
문제
RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.
집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.
- 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
- N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.
- i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.
입력
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 모든 집을 칠하는 비용의 최솟값을 출력한다.
예제 입력 1 복사
3 26 40 83 49 60 57 13 89 99
예제 출력 1 복사
96
#include <iostream>
using namespace std;
int board[1000][3];
int rg[1000][3];
int n;
int main(void)
{
cin >> n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> board[i][j];
}
}
for (int j = 0; j < 3; j++)
rg[0][j] = board[0][j];
for (int i = 1; i < n; i++)
{
rg[i][0] = min(rg[i - 1][1], rg[i - 1][2]) + board[i][0];
rg[i][1] = min(rg[i - 1][0], rg[i - 1][2]) + board[i][1];
rg[i][2] = min(rg[i - 1][0], rg[i - 1][1]) + board[i][2];
}
// for (int i = 0; i < n; i++)
// {
// cout << rg[i][0] << " " << rg[i][1] << " " << rg[i][2] << "\n";
// }
cout << min(min(rg[n - 1][0], rg[n - 1][1]), rg[n - 1][2]);
}
처음에 max()로 했다가 큰 값 나와서 놀랐네 ㅋㅋㅋ
min 으로 하면 됨!
min 같은 경우 using namespace std std에 내장된 함수다.
blog.encrypted.gg/737?category=773649
혹시 강의 보고 싶으면 여기 참고 아래는 정답 코드
www.acmicpc.net/source/share/f40027a5ab3a449e89ac1d4c77738cea
오잉 완전 동일하게 풀었다.
반응형
'C언어' 카테고리의 다른 글
1965 상자넣기 : 가장 길게 커지는 수 랑 같은 풀이임 (0) | 2021.01.25 |
---|---|
백준 15665번 : N 과 M 11번 prinarr != arr[i] (0) | 2021.01.24 |
백준 1912 연속합 문제 *max_element(d + 1, d + n + 1); 사용 (0) | 2021.01.23 |
백준 11726 2*n 타일링 ( 시간 지나고 또 품) (0) | 2021.01.23 |
codeup코드업 2608 동아리 회장 선거 (0) | 2021.01.20 |
코드업 codeup 4033 네모네모 로직 (0) | 2021.01.20 |
Codeup 코드업 3120 리모콘 온도 (0) | 2021.01.19 |
codeup 2652 영화관 문제 2 (0) | 2021.01.18 |