9_yoon
개발저장소
9_yoon
전체 방문자
오늘
어제
  • 분류 전체보기 (101)
    • 알고리즘 (52)
      • BJ (40)
      • 프로그래머스 (0)
      • SWEA (10)
      • JO (2)
    • 이론 공부 (7)
      • 네트워크 (2)
      • 알고리즘 (2)
      • Java (1)
      • Web (1)
      • 기타 (1)
    • 개발 공부 (35)
      • Project (1)
      • JavaScript (1)
      • Typescript (1)
      • Spring (12)
      • Java (2)
      • Next JS (7)
      • React (3)
      • Vue (1)
      • Web (5)
      • 기타 (2)
    • 기타 (7)
      • SSAFY (7)
      • 일상 (0)

인기 글

태그

  • 싸피
  • 김영한 스프링
  • React
  • 스프링
  • SSAFY
  • 싸피7기
  • 노마드코더
  • 백준
  • NextJS
  • SWEA

최근 글

티스토리

hELLO · Designed By 정상우.
9_yoon

개발저장소

[BJ] 백준 11463 1로 만들기(JAVA)
알고리즘/BJ

[BJ] 백준 11463 1로 만들기(JAVA)

2022. 3. 14. 23:49
728x90
반응형

문제

https://www.acmicpc.net/problem/1463

 

풀이 방법

문제는 간단하다. 
1. x가 3으로 나누어떨어지면, 3으로 나누기
2. x가 2로 나우어 떨어지면, 2로 나누기
3. 1를 빼기
위 세개의 연산을 적절히 사용해서 1을 만드는데 연산을 사용하는 횟수의 최소값을 구하는 문제이다.
이 문제는 dp를 사용해서 풀면 된다.
dp[N]에는 N이 1이 될때까지의 최소 연산 횟수를 가지고 있다. 
우선 N이 2또는 3으로 나누어떨어지는지 확인한다. 만약 나누어 떨어진다면 2로 나눴을 때와 3으로 나눴을때 어떤 수가 더 최소연산 횟수를 가지는지 비교해서 더 작은 값을 dp에 넣는다. 
그리고 항상 -1를 했을 경우의 연산의 최소값을 구해서 기존의 dp값과 비교 후, 더 작은 값을 dp에 넣어준다.
정리하면,
1. 2로 나눠지면 2로 나눈 후 최소 연산 횟수를 기존의 dp값과 비교  후 더 작은 값을 넣는다.
2. 3으로 나눠지면 3으로 나눈 후 최소 연산 횟수를 기존의 dp값과 비교  후 더 작은 값을 넣는다.
3. (항상) 1를 뺐을 때 최소 연산 횟수를 기존의 dp값과 비교  후 더 작은 값을 넣는다.

 

제출 코드

package D0225;

import java.util.Arrays;
import java.util.Scanner;

public class BJ_1463_1로만들기 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();

		int[] dp = new int[N + 1];
		Arrays.fill(dp, Integer.MAX_VALUE);

		dp[1] = 0;
		for (int i = 2; i <= N; i++) {
			if (i % 2 == 0 || i % 3 == 0) {
				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);
			}
			dp[i] = Math.min(dp[i], dp[i - 1] + 1);
		}
		System.out.println(dp[N]);
	}

}

 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'알고리즘 > BJ' 카테고리의 다른 글

[BJ] 백준 10844 쉬운 계단 수 (JAVA)  (0) 2022.03.17
[BJ] 백준 2116 주사위쌓기(JAVA)  (0) 2022.03.16
[BJ] 백준 1753 최단경로(JAVA)  (0) 2022.03.12
[BJ] 백준 10158 개미(JAVA)  (0) 2022.03.10
[BJ] 백준 10163 색종이(JAVA)  (0) 2022.03.08
    '알고리즘/BJ' 카테고리의 다른 글
    • [BJ] 백준 10844 쉬운 계단 수 (JAVA)
    • [BJ] 백준 2116 주사위쌓기(JAVA)
    • [BJ] 백준 1753 최단경로(JAVA)
    • [BJ] 백준 10158 개미(JAVA)
    9_yoon
    9_yoon
    배울게 넘쳐나는 개발 세상에서 묵묵히 걸어가며 지식을 쌓는 신입 개발자

    티스토리툴바