728x90
재귀함수 기본문제
옛날 학부시절때
n개가 늘어날 때 왜 이걸 그 루트를 파고들어서 이해하고 싶어 햇는지
행여나 최적의 경로를 못찾을 수도 잇지 않을까 이런 걱정을 하기도 햇는데 재귀함수에 대한 이해가
아예 없어서 그랫나보다
n이 늘어날수록 이걸 컴퓨터가 어떠한 경로로 하노이의탑을 만드는지 1path씩 쪼개서 보면 이해하기가 힘들고
n-1을 buffer에 1을 end에 n-1을 end에를
만들어줘서 속도가 빠른 컴퓨터 니가 해결해라는 식으로 문제를 풀어줘야함
n이 늘어날수록 복잡해진 과정을 이해하려고 할 필요도 없고 이해할 수도 없음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | static StringBuilder sb; static ArrayList<int[]> route = new ArrayList<>(); public int[][] solution(int n) { sb = new StringBuilder(); moveHanoi(n, 1, 2, 3); int[][] answer = new int[route.size()][2]; for (int i = 0; i < route.size(); i++) { answer[i][0] = route.get(i)[0]; answer[i][1] = route.get(i)[1]; } return answer; } void moveHanoi(int diskNum, int start, int buffer, int end) { if (diskNum == 1) { // System.out.println(start+" "+end); route.add(new int[] { start, end }); sb.append(Integer.toString(start) + Integer.toString(end)); } else { moveHanoi(diskNum - 1, start, end, buffer); // moveHanoi(1,start,buffer,end); // System.out.println(start+" "+end); route.add(new int[] { start, end }); sb.append(Integer.toString(start) + Integer.toString(end)); moveHanoi(diskNum - 1, buffer, start, end); } } | cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 징검다리 (이분탐색) (0) | 2019.11.29 |
---|---|
프로그래머스 - 입국심사 (이분탐색) (0) | 2019.11.29 |
프로그래머스 - 최고의 집합 (규칙찾기) (0) | 2019.11.28 |
프로그래머스 - 줄 서는 방법 (규칙 찾기) (0) | 2019.11.28 |
프로그래머스 - 야근 지수 (구현?) (0) | 2019.11.28 |