Algorithm, programmers, 타일장식물(43104)
풀이
- 0부터 n까지의 노드를 차례로 깊이우선으로 탐색한다.
- 탐색한 노드는 visited를 이용하여 true로 변경해준다.
- 탐색이 완료된 노드의 다음 노드를 방문했는지 visited로 확인하고, 방문하지 않았다면 해당 노드를 깊이우선으로 탐색한다.
- 깊이 우선으로 탐색할때 마다 network 는 +1 해준다.
package org.programmers;
public class Level1_tile_43104 {
public static void main(String[] args) {
System.out.println( solution2(5) );
}
public static long solution(int N) {
long answer = 0;
long tile[] = new long[80];
tile[0] = 1;
tile[1] = 1;
getTile(tile, 2, N);
answer = tile[N-1] * 4 + tile[N-2] * 2;
return answer;
}
public static void getTile(long tile[], int current, int goal) {
if (current == goal)
return;
tile[current] = tile[current-1] + tile[current-2];
getTile(tile, current+1, goal);
}
public static long solution2(int N) {
long answer = 0;
long tile[] = new long[80];
tile[0] = 1;
tile[1] = 1;
for (int i = 2; i < N; i++)
tile[i] = tile[i-1] + tile[i-2];
answer = tile[N-1] * 4 + tile[N-2] * 2;
return answer;
}
}
Reference