HOIT_B

[백준]C# 1463번 1로 만들기 본문

작고소중한 알고리즘 풀기

[백준]C# 1463번 1로 만들기

HOIT_77 2021. 1. 27. 18:40
728x90

[문제]

 

www.acmicpc.net/problem/1463

 

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