본문 바로가기

JAVA/수업 Test

갤러그_재귀함수 이용

풀이1(강사님)

package kosta.Test;

import java.util.Arrays;
import java.util.Scanner;

public class Test01_갤러그3_강사님 {
	public static int deep(int a, int b,int day) {
		if(b>a) {
			return day;
		}else {
			return deep(2*a,3*b,day+1);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
		StringBuffer sb=new StringBuffer();
		int t=scan.nextInt(); //3을 입력할 것이다
		for (int i = 0; i < t; i++) {
			int a=scan.nextInt();
			int b=scan.nextInt();
			sb.append("#"+(i+1)+" "+deep(a,b,0));
			sb.append("\n");
		}
		System.out.println(sb);
	}
}

 

풀이2(내가 이용한 재귀함수)

package kosta.Test;

import java.util.Arrays;
import java.util.Scanner;

public class Test01_갤러그2_재귀함수이용 {
	public static String  f(int i, int[][] arr) {
		if(i<arr.length) {
			int num=1;
			while(true) {
				arr[i][0]=2*arr[i][0];
				arr[i][1]=3*arr[i][1];
				if(arr[i][0]>arr[i][1]) {
					num++;
				}else {
					break;
				}
			}
			return "#"+(i+1)+". "+num+"\n"+(f(i+1,arr));
		}else {
			return ""; 
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
//		System.out.print("시도할 횟수:");
		int n=scan.nextInt();
		int[][] arr=new int[n][2];
//		System.out.println(n+", 2 배열 생성 완료");
		int num;
		for (int i = 0; i < arr.length; i++) {
//				System.out.print("종현이 점수:");
				arr[i][0]=scan.nextInt();
//				System.out.print("종원이 점수:");
				arr[i][1]=scan.nextInt();
		}//첫번째 for문 끝 점수가 담긴 배열 생성


		System.out.println(f(0,arr));
	}

}

풀이3(그냥 재귀함수 없이)

package kosta.Test;

import java.util.Arrays;
import java.util.Scanner;

public class Test01_갤러그 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
//		System.out.print("시도할 횟수:");
		int n=scan.nextInt();
		int[][] arr=new int[n][2];
//		System.out.println(n+", 2 배열 생성 완료");
		int num;
		for (int i = 0; i < arr.length; i++) {
//				System.out.print("종현이 점수:");
				arr[i][0]=scan.nextInt();
//				System.out.print("종원이 점수:");
				arr[i][1]=scan.nextInt();
		}//첫번째 for문 끝 점수가 담긴 배열 생성

		for (int i = 0; i < arr.length; i++) {
			num=1;
			while(true) {
				arr[i][0]=2*arr[i][0];
				arr[i][1]=3*arr[i][1];
				if(arr[i][0]>arr[i][1]) {
					num++;
				}else {
					break;
				}
			}
//			System.out.println((i+1)+"번째 case="+num+"번");
			System.out.println("#"+(i+1)+" "+num);
		}
		
	}

}

'JAVA > 수업 Test' 카테고리의 다른 글

랜덤 숫자 up down 게임  (0) 2021.02.01
숫자 야구 게임(내방법)  (0) 2021.02.01
숫자 야구 게임(강사님방법)  (0) 2021.02.01