RUBY

못생긴 수 본문

PS/This

못생긴 수

RUBY_루비 2020. 8. 17. 23:59

출처:: 구글 인터뷰

분류:: DP

 

1. 문제 이해 및 해결과정

- 못생긴 수: 2,3,5만을 소인수로 가지는 수 
- 1은 못생긴 수라고 가정 
- 못생긴 수 = {1,2,3,4,5,6,8,9,10,12,15, ... } 

 

2. 풀이방법

 1.DP

#못생긴 수
#
import sys
sys.stdin = open("input.txt","r")
n=int(input())

ugly = [0]*n #못생긴 수를 담기 위한 테이블(1차원 dp테이블)
ugly[0]=1 #첫번쨰 못생긴 수는 1

#2,3,5배를 위한 인덱스
i2=i3=i5=0

#처음에 곱셈값을 초기화
next2,next3,next5=2,3,5

#1부터 n까지의 못생긴 수 찾기
for i in range(1,n):
    #가능한 곱셈 결과 중에서 가장 작은 수를 선택
    ugly[i] = min(next2,next3,next5)
    #인덱스에 따라서 곱셈 결과를 증가
    if ugly[i]==next2:
        #print(i2,next2)
        i2+=1
        next2=ugly[i2]*2
    if ugly[i] == next3:
        #print(i3,next3)
        i3 += 1
        next3 = ugly[i3] * 3
    if ugly[i] == next5:
        i5 += 1
        next5 = ugly[i5] * 5
    print(ugly)
print(ugly[n-1])

 

3. 오답원인

 

4. 알게된 점

 

'PS > This' 카테고리의 다른 글

어두운 길  (0) 2020.08.19
여행 계획  (0) 2020.08.19
편집 거리  (0) 2020.08.17
금광  (0) 2020.08.15
정수 삼각형  (0) 2020.08.15
Comments