반응형

dp 14

1463번: 1로 만들기(백준 C++)

www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 #include using namespace std; int n; int dp[1000001]; //각 숫자별 1이 될 때까지 수행해야하는 최소 단계 저장. int min(int a, int b){ return a < b ? a : b; } void solve(){ dp[1] = 0; dp[2] = 1; dp[3] = 1; for(int i=4; i n; solve(); return 0; } 문제 동적계획법, 즉 DP를 사용하여 푸는 문제입니다. 주어진 수 N을 3가지 연산을 활용하여 1로 만드는데 연산횟수가 최소로 될..

공부/백준 2020.11.21

2579번: 계단 오르기(백준 C++)

www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 #include using namespace std; int score[300] = {0, }; int stair[300] = {0, }; int n; int max(int a, int b){ return a > b ? a : b; } void init(){ cin >> n; for(int i=0; i> stair[i]; } } void solve(){ score[0] = stair[0]; score[1] = max(..

공부/백준 2020.11.20

1149번: RGB거리(백준 C++)

1149번: RGB거리 링크 코드 #include using namespace std; // RGB 거리 int rgb[1000][3]; // 집을 색칠하는데 드는 비용 입력 받기 void init(int n){ for(int i=0; i> rgb[i][0] >> rgb[i][1] >> rgb[i][2]; } } void solve(int n){ for(int i=1; i G 순으로 칠해져서 1 + 5 + 1 이 되어야 하지만 N = 2 일때 그 순간의 최소값이 2라는 함정에 빠지게 된 것이다. 따라서 점화식은 R, G, B 에 따른 3개를 운용해야 한다. 변수 int rgb[1000][3]; 집을 칠하는 데 필요한 비용을 담는 배열을 선언한다. rgb[집의 개수][색의 개수] 이후, Input 따라 배..

공부/백준 2020.11.17

9461번: 파도반 수열(백준 C++)

9461번: 파도반 수열 링크 코드 #include #include using namespace std; vector v(4, 1); //P(1) ~ P(3) 1, 1, 1 P(0)은 존재하지 않지만 편의상 생성. void solve(int n){ int l = v.size() - 1; //주어진 n의 크기가 Vector v의 크기보다 작으면 바로 출력. if(n > l){ //주어진 n의 크기가 Vector v의 크기보다 크면 //현재까지 구한 P의 값 이후부터 시작해서 P(n) 산출 //점화식 P(n) = P(n-3) + P(n-2) for(int i = l+1; i= 6) 풀이 기존에 작성한 코드의 경우는 점화식 1을 가지고 작성된 코드이다. 아무생각없이 그림을 안 봐도 점화식이 보이는 것 같아 이..

공부/백준 2020.11.16
반응형