Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 파라메트릭 서치
- 통계학
- 코딩테스트
- 확률
- BFS
- 문자열
- horner
- 알고리즘
- 입출력
- 이분탐색
- 스티커 C++
- 프로그래머스C#
- 백준 C#
- C
- dp
- 백준
- 너비우선탐색
- 프로그래머스 c#
- horner algorithm
- C#
- C++
- 선형대수학
- cpp
- 9095 C++
- 백준 9465
- 확률론
- 통계
- 수치해석
- 프로그래머스
- 철자검사
Archives
- Today
- Total
HOIT_B
[백준]C# 1463번 1로 만들기 본문
728x90
[문제]
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
[ ]
dp [n]
n : 2,3 배수 x
>> min[n-1]+1
n : 2의 배수
>> min[n-1]+1 과 min [n/2]+1중 작은 수
n : 3의 배수
>> min[n-1]+1 과 min [n/3]+1중 작은 수
[의사 코드]
n입력 받음
n크기의 dp배열 생성
dp [0]=[1]=0
for(2부터 n까지 반복)
dp [i] = dp [i-1]+1
if(2의 배수) min(dp [i] , dp[i/2]+1)
if(3의 배수) min(dp[i] , dp [i/3]+1)
dp [n] 출력
[코드]
using System;
class dp{
static void Main(){
int n = int.Parse(Console.ReadLine());
int[] dp = new int[n+1];
dp[0] = dp[1] = 0;
for(int i=2; i<=n; i++){
dp[i] = dp[i-1]+1;
if(i%2==0){
dp[i]=Math.Min(dp[i],dp[i/2]+1);
}
if(i%3==0){
dp[i]= Math.Min(dp[i],dp[i/3]+1);
}
}
Console.WriteLine(dp[n]);
}
}
다른 방법은 이후에 공부하고 와서 다시 해보자.
728x90
'작고소중한 알고리즘 풀기' 카테고리의 다른 글
[백준] C# 11727번 2xn 타일링2 (0) | 2021.02.02 |
---|---|
[백준]C#,C++ 11726번 2xn 타일링 (0) | 2021.01.27 |
[백준]C# 2446 별찍기7 (0) | 2021.01.25 |
[백준] C# 2522 별찍기 12 (0) | 2021.01.24 |
[백준]C# 2445 별찍기8 (0) | 2021.01.24 |
Comments