Algorithm/백준 알고리즘

백준_2502 떡 먹는 호랑이(자바) / 브루드 포스

미스터로즈 2021. 5. 7. 08:26

시간 & 메모리 제한

문제

입력 & 출력

브루드 포스를 이용한 문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Back_2502 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int D = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		int[] arr= new int[D];
		
		for (int i = 1; i <= K/2; i++) {
			for (int j = i+1; j < K; j++) {
				arr[0]=i;
				arr[1]=j;
				for (int k = 2; k < D; k++) {
					arr[k]=arr[k-1]+arr[k-2];
				}
				
				if(arr[D-1]==K) {
					System.out.println(arr[0]);
					System.out.println(arr[1]);
					System.exit(0);
				}
			}
		}
	}

}


- 브루트 포스를 이용해서 문제를 풀었습니다.

 

- 일단 값을 받아왔고, 이중 for문을 통해서 a와 b의 값을 정해줬습니다.

 

- 이때, a의 경우 최대 값을 K/2라고 잡았습니다. 예제와 같이 41이라면 a 가 최대가 20 이라면 b의 경우는 21이 됩니다. 

즉, a의 범위를 절반만 잡아도 충분히 결과를 얻을 수 있습니다.

 

- 값을 찾으면 출력을 해주고 바로 종료를 시켜줍니다.