//import java.util.Scanner;
import java.util.Random;

public class QuizMethod {
	
	public static void main(String[] args) {
//		Scanner sc = new Scanner(System.in);
//		// 이름, 나이, 성별, 키를 입력받아서 반환하는 각각의 메서드를 구현하세요
//		String who = name(sc);
//		int old = age(sc);
//		String mw =gender(sc);
//		double h =height(sc);
//
//		// 출력
//		System.out.println();
//		System.out.println("--- 입력정보 ---");
//		System.out.println("이름 : " + who);
//		System.out.println("나이 : " + old + '세');
//		System.out.println("성별 : " + mw);
//		System.out.println("키   : " + h + "cm");
		
		// 정수 하나를 입력받아서 반환하는 메서드를 구형하세요.
		// 위 메서드를 사용해서 변수 2개를 각각 초기화 합니다.
		// 두개의 변수를 사용해서, 두 수 중 큰 수를 찾아서 반환하는 메서드를 구현하세요.
		// → 변수에 들어가는 값은 1이상의 값만 가능하고, 같은 값이면 0을 반환.

//		int a1 = rangeInput(sc, 1, 10);
//		int a2 = rangeInput(sc, 1, 10);
//		
//		System.out.println();
//		
//		int res = compare(a1, a2);
//		System.out.println("bigger than (same 0): " + res);
		
	    // 생성하려는 숫자(정수) 범위의 시작, 마지막 값을 넘겨 받아서,
	    // 해당 범위의 랜덤값을 반환하는 메서드를 구현하세요
		
		Random random = new Random();
//		int rv = rangeRandom(random, 1, 10);
//		System.out.println("rv : " + rv);
		
		// 아래의 배열에 한번에 같은 값이 들어갈때까지 진행하는 메서드를 구현하세요.
		// → 값 : 1 ~ 5
		int[] data = new int[3];
		data = samecost(random, data);
		for(int i=0;i<data.length;i++) {
			System.out.print(data[i] + " ");
		}
		
//		sc.close();
	}
	public static int[] samecost(Random random, int[] arr) {
		int cnt = 0;
		for(int i=0;i<arr.length;i++) {
			arr[i] = random.nextInt(5 - 1 + 1) + 1;
			if ((i>0) && arr[i]!=arr[i-1]) i--;
			cnt++;
		}
		System.out.println("cnt :" + cnt);
		return arr;
	}
	
	
//	public static int rangeRandom(Random random, int start, int end) {
//		if(end < start) {
//			System.out.println("- range error -");
//			return -1;
//		}
//		return random.nextInt(end - start + 1) + start;
//	}
	
	
//	public static int compare(int n1, int n2) {
//		int big = n1 > n2 ? n1 : n2;
//		if (n1==n2) big=0;
//		return big;
//	}
//	
//	public static int rangeInput(Scanner sc, int start, int end) {
//		int value = 0;
//		while(true) {
//			System.out.print(start + " ~ " + end + " 사이의 값 입력 > ");
//			value = sc.nextInt();
//			if(value >= start && value <= end) break;
//		}
//		return value;
//	}
	
//	
//	public static String name(Scanner sc) {
//		System.out.print("이름을 입력하세요 > ");
//		String who = sc.next();
//		return who;
//	}
//	
//	public static int age(Scanner sc) {
//		System.out.print("나이를 입력하세요 > ");
//		int old = sc.nextInt();
//		return old;
//	}
//	
//	public static String gender(Scanner sc) {
//		System.out.print("성별을 입력하세요 > ");
//		String mw = sc.next();
//		return mw;
//	}
//	
//	public static double height(Scanner sc) {
//		System.out.print("키를 입력하세요   > ");
//		double h = sc.nextDouble();
//		return h;
//	}
}
import java.util.Random;
import java.util.Scanner;

public class QuizMethod {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
//		// 이름, 나이, 성별, 키를 입력받아서 반환하는 각각의 메서드를 구현하세요
//		String name = inputString("이름 입력 > ", scanner);
//		int age = inputInteger("나이 입력 > ", scanner);
//		char gender = inputCharacter("성별 입력 > ", scanner);
//		double height = inputDouble("키   입력 > ", scanner);
//		
//		System.out.println();
//		
//		System.out.println("--- 입 력   정 보 ---");
//		System.out.println("이름 : " + name);
//		System.out.println("나이 : " + age + " 세");
//		System.out.println("성별 : " + gender);
//		System.out.println("키   : " + height + " cm");

		
		
//		// 정수 하나를 입력받아서 반환하는 메서드를 구현합니다
//		// 위 메서드를 사용해서 변수 2개를 각각 초기화 합니다
//		// 두개의 변수를 사용해서, 두수 중 큰수를 찾아서 반환하는 메서드를 구현하세요
//		// - 변수에 들어가는 값은 1 이상의 값만 가능하고, 같은 값이면 0 을 반환합니다
//		int dataA = rangeInputInt(scanner, 1, 10);
//		int dataB= rangeInputInt(scanner, 1, 10);
//		int max = findMax(dataA, dataB);
//		if(max != 0) {
//			System.out.println(dataA + " , " + dataB + " 중 큰수 : " + max);
//		} else {
//			System.out.println(dataA + " , " + dataB + " 같은수");
//		}
		
		
		
//		// 생성하려는 숫자(정수) 범위의 시작, 마지막 값을 넘겨 받아서,
//		// 해당 범위의 랜덤값을 반환하는 메서드를 구현하세요
//		Random random = new Random();
//		int rv = rangeRandom(random, 1, 10);
//		System.out.println("rv : " + rv);
		
		
		
		// 아래의 배열에 한번에 같은 값이 들어갈때까지 진행하는 메서드를 구현하세요
		// - 값 : 1 ~ 5
		int[] data = new int[3];
		sameArray(data);
		
		
	} // main
	
	public static void setArray(int[] arr, Random random) {
		for(int i=0 ; i<arr.length ; i++) {
			arr[i] = rangeRandom(random, 1, 5);
		}
	}
	
	public static void showArray(int[] arr, int count) {
		System.out.print(count + " 회 : ");
		for(int i=0 ; i<arr.length ; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
	
	public static boolean sameCheck(int[] arr) {
		int p = arr[0];
		for(int i=1 ; i<arr.length ; i++) {
			if(arr[i] != p)
				return false;
		}
		return true;
	}
	
	public static void sameArray(int[] arr) {
		Random random = new Random();
		int count = 0; // 시도 횟수
		while(true) {
			++count;
			setArray(arr, random); // 데이터 입력
			showArray(arr, count); // 데이터 출력
			if(sameCheck(arr))     // 데이터 확인 ( 성공 : true, 실패 : false )
				break;
		}
	}
	
	public static int rangeRandom(Random random, int start, int end) {
		if(end < start) {
			System.out.println("- range error -");
			return -1;
		}
		return random.nextInt(end - start + 1) + start;
	}
	
	public static int findMax(int a, int b) {
		if(a > b) return a;
		else if(b > a) return b;
		else return 0;
	}
	
	public static int rangeInputInt(Scanner scanner, int start, int end) {
		int value = 0;
		while(true) {
			System.out.print(start + " ~ " + end + " 사이의 값 입력 > ");
			value = scanner.nextInt();
			if(value >= start && value <= end)
				break;
		}
		return value;
	}
	
	public static double inputDouble(String message, Scanner scanner) {
		System.out.print(message);
		double value = scanner.nextDouble();
		return value;
	}
	
	public static char inputCharacter(String message, Scanner scanner) {
		System.out.print(message);
		char value = scanner.next().charAt(0);
		return value;
	}
	
	public static int inputInteger(String message, Scanner scanner) {
		System.out.print(message);
		int value = scanner.nextInt();
		return value;
	}
	
	public static String inputString(String message, Scanner scaner) {
		System.out.print(message);
		String value = scaner.next();
		return value;
	}
	
}