백준 : 1로 만들기(1463) with 자바

2023. 10. 8. 17:05· 백준 : 동적 프로그래밍

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

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

이문제는 간단한 문제이다

2로 나누어지면 2로 나누고, 3으로 나누어지면 3으로 나눈다.

2, 3으로 나누어지지 않으면 1을 빼준다.

위 과정을 반복해서 최소 연산의 수를 구하면 되는 문제이다.

 

바로 코드를 살펴보자

import java.util.Scanner;

public class 일로만들기 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] dp = new int[N + 1];

        for(int i=2; i < N + 1; 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);
            }
        }
        System.out.println(dp[N]);
    }
}

스캐너 객체를 생성한 뒤 N값을 입력받는다.

dp[]를 생성합니다.

for(int i=2; i < N + 1; i++){

i=2부터 i < N + 1까지 반복하는데 2부터 시작하는 이유는 1은 이미 1로 만들어진 상태이기 때문에 2부터 시작합니다.

dp[i] = Math.min(dp[i], dp[i / 2] + 1);

2로 나누어 떨어지면 dp[i], dp[i/2] + 1의 최솟값을 구해서 dp[i] 에 저장하고

dp[i] = Math.min(dp[i], dp[i / 3] + 1);

3로 나누어 떨어지면 dp[i], dp[i/3] + 1의 최솟값을 구해서 dp[i] 에 저장하면 됩니다.

위과정을 거친뒤 dp[N]을 출력하면 최소 연산횟수를 구할 수 있습니다.

저작자표시 (새창열림)

'백준 : 동적 프로그래밍' 카테고리의 다른 글

백준 : 파이프 옮기기(17070) with 파이썬  (0) 2023.11.26
백준 : 피보나치 함수(1003) with 자바  (0) 2023.10.08
백준 : 가장 긴 바이토닉 부분 수열(11054) with 자바  (0) 2023.09.24
백준 : 제곱수들의 합(1699) with 자바  (0) 2023.09.24
백준 : LCS(9251) with 파이썬  (0) 2023.08.18
'백준 : 동적 프로그래밍' 카테고리의 다른 글
  • 백준 : 파이프 옮기기(17070) with 파이썬
  • 백준 : 피보나치 함수(1003) with 자바
  • 백준 : 가장 긴 바이토닉 부분 수열(11054) with 자바
  • 백준 : 제곱수들의 합(1699) with 자바
유민기
유민기
유민기
Youminki
유민기
전체
오늘
어제
  • 분류 전체보기 (45)
    • 백준 : BFS (5)
    • 알고리즘(이충기 교수) (4)
    • 웹해킹 (6)
    • 백준 : 동적 프로그래밍 (11)
    • 백준 : 분할정복 (5)
    • 백준 : backtraking (2)
    • 컴퓨터 보안(한승철 교수) (4)
    • FrontEnd (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
유민기
백준 : 1로 만들기(1463) with 자바
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.