[알고리즘/백준] 1463번 : 1로 만들기(Java)

2025. 5. 30. 07:20·Algorithms & Education/알고리즘
문제 1463번 : 1로 만들기
문제링크 https://www.acmicpc.net/problem/1463
난이도 S3
언어 Java
분류 DP | 다이나믹 프로그래밍

 

 

📌 최종 정답 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		int[] dp = new int[n+1];
		
		dp[1] = 0; // 초기화
		
		for(int i=2; i<=n; i++) {
			// 1을 빼는 경우 - 기본값
			dp[i] = dp[i-1] + 1;
			
			// 2로 나누어 떨어지는 경우
			if (i % 2 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 2] + 1); 
                // i를 2로 나누는 연산을 했을 때의 최소 연산 횟수 + 이번 나누기 연산 1회 중 더 작은 값을 선택
                /*
                 * dp[i] : 현재까지 구한 최소 연산 횟수
				 * dp[i / 2] + 1 : 2로 나누는 연산을 했을 경우의 경로 연산 횟수
				 * Math.min(...) : 둘 중 더 나은(작은) 연산 횟수를 선택함
                 */
            }

            // 3으로 나누어 떨어지면
            if (i % 3 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 3] + 1);
            }
		}
		
		 // 결과 출력
        bw.write(String.valueOf(dp[n]));
		
		bw.flush();
		bw.close();
		
		br.close();
	}
}


📌 구해야 하는 정답

- 연산을 하는 횟수의 최솟값을 출력


📌 코드 설계하기

1. 정수 n입력

2. 계산

  - 1을 빼는 경우

  - 2로 나누어 떨어지는 경우

  - 3으로 나누어 떨어지는 경우

3. 결과 출력

 

 

'Algorithms & Education > 알고리즘' 카테고리의 다른 글

[알고리즘/백준] 17204번 : 죽음의 게임(Java)  (0) 2025.06.01
[알고리즘/백준] 10451번 : 순열 사이클(Java)  (0) 2025.05.31
[알고리즘/백준] 1010번 : 다리 놓기(Java)  (1) 2025.05.29
[알고리즘/백준] 2775번 : 부녀회장이 될테야(Java)  (1) 2025.05.28
[알고리즘/백준] 2748번 : 피보나치 수 2(Java)  (1) 2025.05.27
'Algorithms & Education/알고리즘' 카테고리의 다른 글
  • [알고리즘/백준] 17204번 : 죽음의 게임(Java)
  • [알고리즘/백준] 10451번 : 순열 사이클(Java)
  • [알고리즘/백준] 1010번 : 다리 놓기(Java)
  • [알고리즘/백준] 2775번 : 부녀회장이 될테야(Java)
min_sol
min_sol
  • min_sol
    ෆ스누피가 찰리찰리해ෆ
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Programming Languages (51)
        • JAVA (40)
        • C# (11)
      • Database (11)
        • oracle (7)
        • postgresql (3)
        • mysql (0)
      • Data & AI (5)
        • 빅데이터 (1)
        • AI (4)
      • Tools & Collaboration (30)
        • GitHub (10)
        • RPA (20)
      • GIS (1)
      • Web Development (58)
        • Spring (11)
        • JSP (11)
        • Front (1)
        • Vue (14)
        • PyQt (10)
        • Next.js (4)
      • Networking & Security (14)
        • TCP_IP (5)
        • 보안 (9)
      • Mobile (6)
        • 안드로이드스튜디오 (6)
      • Others (4)
        • 일상 (2)
        • 2021 (2)
      • Algorithms & Education (58)
        • 알고리즘 (52)
        • 세미나 | 교육 (5)
        • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    생능출판
    알고리즘
    자바
    명품자바에센셜
    PyQt
    연습문제
    백준
    Java
    jsp
    코딩테스트
    이클립스
    계산기
    VUE
    스윙
    자료구조
    PyQt5
    spring
    자동화
    vue.js
    RPA
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[알고리즘/백준] 1463번 : 1로 만들기(Java)
상단으로

티스토리툴바