본문 바로가기

Computer Science/Programming-알고리즘5

[Baekjoon] 하노이 탑 이동 순서 문제 : https://www.acmicpc.net/problem/11729 설명 : 알고리즘 강의에서 재귀함수에 대한 부분에서 항상 언급되는 하노이타워 문제이다.N개의 원판을 A에서 C로 옮길 때, 1. N-1개의 원판을 A에서 B로 옮긴후,2. A에 남아있는 가장 큰 원반을 C로 옮긴다. 3. 다시 N-1개의 원판을 B에서 A로 옮기면 된다. 코드 :1234567891011121314151617181920212223242526272829303132333435363738 package feb12.hanoi; import java.util.Scanner; public class Main { public void hanoi(int i, int start, int mid, int end){ if(i == 1.. 2016. 2. 22.
[Baekjoon] 타일채우기 문제 : https://www.acmicpc.net/problem/2133설명 : 3*N의 타일을 2*1, 1*2 사이즈의 타일을 가지고 채우는 경우의 수를 구하는 문제이다. 풀이 : Top-down 방식으로 해결하면 될 것 같았다. 그러나 쪼개고 쪼개도 '실패'로 떴고...생각하지 못했던 부분들까지 쪼개야 하였다. 첨부한 그림파일로 이해하면 쉬울 것이다. 코드 :12345678910111213141516171819202122232425262728293031323334353637383940414243444546 package feb12.tile; import java.util.Scanner; public class Main { public static int getTile_2(int n, int[] ar.. 2016. 2. 22.
[Baekjoon] 외계인의 기타연주 문제 : https://www.acmicpc.net/problem/2841 설명 : 6개의 기타 줄이 있고, P개의 프렛수가 주어진다. N개의 경우에 대해 줄의 번호와 프렛 번호가 주어질 때 최소 손가락의 움직임을 출력하는 문제이다. 풀이 :1번줄의 3번을 누르고 있다가 5번을 누르면 5번음이 연주가 된다. 단, 이때 2번음을 연주하고자 한다면, 누른 5번음과 3번음을 때야한다.한마디로 더 낮은 음을 연주하기 위해서는 그보다 높은 음을 떼야한다. -> LIFO구조의 스택을 이용 코드 :1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666.. 2016. 2. 22.
[Baekjoon] 앱 문제 : https://www.acmicpc.net/problem/7579 설명 : N과 M이 주어지고, N개의 App에 대해 각각 사용중인 Bytes와 비활성화 했을 시에 대한 비용들이 주어진다. 이때 Mbytes를 확보하기 위한 최소한의 비용을 구하는 문제이다.처음 문제를 접했을 때, DP로 풀어야 겠다는 감은 왔지만...정말 오랜 시간이 걸린 문제이다. 풀이 : Mbytes를 확보하기 위해 드는 최대 비용은 당연 모든 비용들을 합한 값이다따라서 이 비용들을 배열의 인덱스로 잡고, DP를 풀어나갔다. (반복문을 돌며(App을 하나씩 거치며), 최소값을 수정해나갔다.)그러나 결과는....'실패' 였다.연습장에 표를 그리고 예제들을 써내려가보았다. 그리고 알게 된 사실... 예제에서는 비용이 3, 0, .. 2016. 2. 22.