BOJ 3

[백준] 1463 1로 만들기

정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나누어 준다. X가 2로 나누어 떨어지면, 2로 나누어 준다. 1을 빼준다. 이 때 정수N이 주어졌을 때 위 연산 세 개를 적절히 이용해 1로 만들려 한다.이러한 규칙이 적용되었을 때, 연산을 사용하는 횟수의 최솟값은? 조건: 1보다 크고 10^6보다 작은 정수 1개가 입력된다. 예) 2입력, 1출력 (2-1) 10 입력, 3 출력 (10-9-3-1) 나는 이 문제를 다이나믹 프로그래밍으로 풀었다. 문제를 풀기 위한 기법은 BFS 등 여러가지 방법이 있으나, 문제에 접근하기 쉬운 방법으로 풀어 보았다. 몇 가지 예를 들어서 생각해보자. 2-13-14-2-15-4-2-16-2-17-6-2-18-4-2-19-..

[백준] 2839 설탕 배달

문제 : 설탕봉지는 3kg과 5kg 봉투가 있습니다. 설탕을 배달할 때에 정확히 n kg 배달해야 하고, 최대한 적은 봉투를 써야합니다. 예를들어, 18kg 의 설탕을 배달할 때에 3kg 6개를 들고가도 되지만 5kg 3개와 3kg 1개를 들고가면 적은 봉투로 배달이 가능합니다. 또한, 4kg 같이 3kg봉투와 5kg봉투로 꽉 채우지 못하거나 남는 경우에는 배달이 불가능합니다. 이 때는 -1을 출력합니다. 이 때, n kg의 설탕을 배달할 때 최소로 필요한 봉투의 개수를 출력하세요. 나의 접근법은 이러하다. (내 생각도 중요하지만 당신의 생각도 중요합니다. 내가 무조건 정답은 아닙니다.) n이 5의 배수일경우엔 n/5를 출력하면 된다. 5kg의 봉투로 다 담아서 배달하면 가장 최소가 되기 때문이다. 괜히..