[백준 / C++] 1로 만들기(실버3, 1463)

2024. 10. 11. 10:12·코딩테스트/백준 (Study)
목차
  1. 문제 풀이
  2. 코드
728x90
반응형

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

문제

정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.

  1. X가 3으로 나누어 떨어지면, 3으로 나눈다.
  2. X가 2로 나누어 떨어지면, 2로 나눈다.
  3. 1을 뺀다.

정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.

입력

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

출력

첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.

예제 입력 1

2

예제 출력 1

1

예제 입력 2

10

예제 출력 2

3

문제 풀이

이번 문제는 대표적인 DP 문제입니다.

 

N의 범위는 1 ~ 1,000,000이며 모든 경우에서의 최솟값을 구해야 하므로 최솟값을 업데이트해가며, 최솟값보다 큰 경우는 전부 반환시켜줘야 합니다.

 

1부터 차례대로 올라가는 방식도 존재하지만, 저의 경우 재귀를 통해 아래로 내려가는 Top-Down 방식으로 로직을 구현하는 것이 익숙하기에 재귀를 사용해 이번 문제를 해결하게 되었습니다.

코드

더보기
#include <iostream>

using namespace std;

int n;
int DP[1000000];

void Go(int num, int cnt)
{
	if (DP[1] != 0 && DP[1] < cnt) return;

	if (num == 1 && DP[num] <= cnt)
	{
		DP[num] = cnt;
		return;
	}

	if (DP[num] != 0 && DP[num] <= cnt) return;

	DP[num] = cnt;

	if (num % 3 == 0) Go(num / 3, cnt + 1);
	if (num % 2 == 0) Go(num / 2, cnt + 1);
	Go(num - 1, cnt + 1);
}

int main()
{
	cin >> n;

	Go(n, 0);

	cout << DP[1];
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 백준 (Study)' 카테고리의 다른 글

[백준 / C++] 정수 삼각형(실버1, 1932)  (0) 2024.10.12
[백준 / C++] RGB거리(실버1, 1149)  (0) 2024.10.11
[백준 / C++] N과 M (9)(실버2, 15663)  (0) 2024.09.19
[백준 / C++] N과 M (8)(실버3, 15657)  (0) 2024.09.15
[백준 / C++] 스도쿠(골드4, 2580)  (0) 2024.09.12
  1. 문제 풀이
  2. 코드
'코딩테스트/백준 (Study)' 카테고리의 다른 글
  • [백준 / C++] 정수 삼각형(실버1, 1932)
  • [백준 / C++] RGB거리(실버1, 1149)
  • [백준 / C++] N과 M (9)(실버2, 15663)
  • [백준 / C++] N과 M (8)(실버3, 15657)
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
LeeTaes 공부노트게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c#
    프로젝트
    sesac
    Summer/Winter Coding
    CS지식
    Algorithm
    unrealengine
    프로그래머스
    C++
    2019 kakao
    후기
    ai controller
    코딩테스트
    issac3d
    timelessadventure
    tsoftobjectptr
    2018 kakao
    2022 kakao
    pcce 기출문제
    구현
    project t.a develop
    delegate
    fsoftobjectpath
    Unreal Engine
    프로세스
    dataasset
    unity
    청년취업사관학교
    백준
    fruitspuzzle
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[백준 / C++] 1로 만들기(실버3, 1463)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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