삐까냥의 파도타기

9095번) 1, 2, 3 더하기 본문

코딩/백준 알고리즘

9095번) 1, 2, 3 더하기

금손형아 2017. 10. 3. 10:35



문제 출처 : https://www.acmicpc.net/problem/9095








import java.util.Scanner;


public class Main {

static int[] arrayValue;

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int input = scanner.nextInt();

int[] array = new int[input];

int max = 0;

//입력한 값을 차례대로 넣는다.

for ( int i = 0; i < input; i++ ) {

int temp = scanner.nextInt();

array[i] = temp;

//입력한 값 중 최대 값을 찾는다.

max = max > temp ? max : temp;

}

scanner.close();

//최대값 만큼 계산을 미리 수행한다.(딱 한번)  

setArrayValue(max);

//이미 계산돼있기 때문에 계산된 값을 출력만 하면 된다.

for ( int i = 0; i < array.length; i++ ) {

System.out.println(arrayValue[array[i]]);

}

}

static void setArrayValue(int max) {

arrayValue = new int[max+1];

if ( max > 0 ) {

arrayValue[1] = 1;

}

if ( max > 1 ) {

arrayValue[2] = 2;

}

if ( max > 2 ) {

arrayValue[3] = 4;

}

if ( max > 3 ) {

for (int i = 4; i < max + 1; i++ ) {

arrayValue[i] = arrayValue[i - 3] + arrayValue[i - 2] + arrayValue[i - 1];

}

}

}

} 





다이나믹 프로그래밍 규칙찾기가 넘나...

'코딩 > 백준 알고리즘' 카테고리의 다른 글

11726번) 2×n 타일링  (0) 2017.10.09
1932번) 숫자삼각형  (0) 2017.10.03
2579번) 계단 오르기  (0) 2017.10.03
1149번) RGB거리  (0) 2017.10.02
1463번) 1로 만들기  (0) 2017.10.02