백준(S3) 1463번: 1로 만들기 (C 언어 C11 C99)

2021. 10. 5. 21:56·C언어/백준 문제풀이
반응형

코드를 보기 전에: 이 문제도 DP문제다. 

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

이렇게 연산을 계속해서 1을 만들어야한다.

 

우선은 반복문을 만들어준다.

반복문 첫 문장이 dq[i]의 값이 전 값에서 1을 더한 것이므로 반복문은 2부터 시작한다.

1
2
for (int i = 2; i <= num; i++) 
        dp[i] = dp[i - 1] + 1;
cs

 

배열에서 dp[i -1]인덱스에서 1을 더 한값과 i를 2로 나눈 숫자가 저장된 값을 비교해서 더 작은값을 고른다.

1
2
3
4
if (i % 2 == 0)
        {
           dp[i] = (MIN(dp[i], dp[i / 2] + 1));
        }
Colored by Color Scripter
cs

 

배열에서 dp[i-1]인덱스에서 1을 더한 값과 i를 3로 나눈 숫자가 저장된 값을 비교해서 더 작은 값을 고른다.

 

1
2
3
4
if (i % 3 == 0)
        {
            dp[i] = (MIN(dp[i], dp[i / 3] + 1)); 
        }
Colored by Color Scripter
cs

 

 

Fullcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#define MIN(a,b) a<b?a:b
    int dp[1000001]; 
int main()
{
    int num;
    scanf("%d", &num);
    for (int i = 2; i <= num; i++)
    {
        dp[i] = dp[i - 1] + 1; 
        if (i % 2 == 0)
        {
            dp[i] = (MIN(dp[i], dp[i / 2] + 1));
        }
        if (i % 3 == 0)
        {
            dp[i] = (MIN(dp[i], dp[i / 3] + 1)); 
        }
    }
    printf("%d", dp[num]);
}
Colored by Color Scripter
cs
반응형
'C언어/백준 문제풀이' 카테고리의 다른 글
  • 백준(S3) 1748번: 수 이어 쓰기 1 (C언어 C11 C99)
  • 백준(S5) 1476번: 날짜 계산 (C언어 C11 C99)
  • 백준(B3) 3053번: 택시 기하학 (C언어 C11 C99)
  • 백준(S3) 11727번: 2xn 타일링2 (C언어 C11 C99)
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (218)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (8)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
백준(S3) 1463번: 1로 만들기 (C 언어 C11 C99)
상단으로

티스토리툴바