[JAVA 문제 풀이] 395. 하노이의 탑

프로그래머스 (12946)
Stupefyee's avatar
Jul 23, 2025
[JAVA 문제 풀이] 395. 하노이의 탑
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int[][] solution(int n) { List<int[]> result = new ArrayList<>(); move(n,result, 1, 3, 2); // 시작: 1, 도착: 3, 경유지: 2 // 리스트를 배열로 변환 int[][] answer = new int[result.size()][2]; for (int i = 0; i < result.size(); i++) { answer[i] = result.get(i); } return answer; } // 재귀 함수 private void move(int n, List<int[]> result, int start, int end, int temp) { // 판이 하나일 경우 if (n == 1) { result.add(new int[] { start, end }); // 원판 하나를 바로 옮김 return; } move(n - 1, result, start, temp, end); // 작은 원판들 중간 기둥으로 이동 result.add(new int[] { start, end }); // 가장 큰 원판 이동 move(n - 1, result, temp, end, start); // 다시 작은 원판들 목적지로 이동 } }
Share article

stupefyee