HTTP 200 OK

Memento mori & Carpe diem

알고리즘 2

[백준 1463] 1로 만들기(파이썬)

문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. DP 문제를 풀이하면서 이해가 잘 가지 않는 부분이 있어 정리해보았다. DP란 문제를 더 작은 단위의 문제들로 나눈다. 작게 나누어진 문제들의 풀이들을 재귀적인 방식으로 최적화 솔루션을 찾음 Tree 형태의 탐색 방식이라고 보아도 무방 모든 상태에 대해 최적의 결과를 모두 어딘가에 ‘저장’ 하고 있다는 사실도 잊지 말자. 즉 모든 ..

알고리즘 2022.01.14

멀쩡한사각형-프로그래머스

최대공약수를 활용하여 대각선으로 선이 그어진다면 선에 겹치는 영역을 제외한 나머지 정사각형들의 개수를 구하는 문제이다. - 첫 시도시 최대공약수가 아닌 w와 h의 크기별로 비교를 하여 해결하려 했는데 44.4에서 정답률이 올라가지 않아 최대공약수를 사용해 해결하였다. def check(w, h): # w와 h중 max=a, min=b a, b = max([w, h]), min([w, h]) while True: # 최대 공약수 구함 r = a % b # 최대공약수를 구한다면 return b if r == 0: return b # b에는 현재 r의 결과값이 들어가있으므로 max의 값은 필요없고 b의 min값을 비교해야함 a = b # r의 현재 값을 b에 넣어줌 b = r def solution(w,h):..

알고리즘 2022.01.09