package Baby_Gin;


import java.util.Scanner;

public class babyGin {

	public static void main(String[] args) {
		int triplet = 0; // 같은수 3개
		int run = 0; // 연속된 수 3개
		// Baby-Gin = triplet이나 run으로만 이루어진 수 (triplet 2 / (triplet 1, run 1) / run 2)
		
		int[] count = new int[10];
		
		System.out.print("6자리의 숫자를 연속으로 입력하세요: ");
		Scanner sc = new Scanner(System.in);
		int str = sc.nextInt();
		//System.out.println(str);		
		String strr = String.valueOf(str);
		
		if(strr.length() == 6) {
			
			for(int i=0;i<6;i++) {
				count[str % 10]++;
				str /= 10;		
			}
			
			//ex: 345555
			// 0 1 2 3 4 5 6 7 8 9
			// 0 0 0 1 1 4 0 0 0 0
			// 0 0 0 1 1 1 0 0 0 0
			
			//ex: 414243
			// 0 1 2 3 4 5 6 7 8 9
			// 0 1 1 1 3 0 0 0 0 0
			// 0 0 0 0 0 0 0 0 0 0
			
			//ex: 444444 -> i--; 필요 // 4를 건너 뛰어버리기 떄문에
			// 0 1 2 3 4 5 6 7 8 9
			// 0 0 0 0 6 0 0 0 0 0
			// 0 0 0 0 0 0 0 0 0 0
			
			//ex: 123345 -> i--; 필요 // 3을 건너 뛰어버리기 떄문에
			// 0 1 2 3 4 5 6 7 8 9
			// 0 1 1 2 1 1 0 0 0 0
			// 0 0 0 1 1 1 0 0 0 0
			
			for(int i=0;i<10;i++) { //count가 4이상인 원소가 있다면, 같은수가 3개가 넘게되므로 triplet이고, 3개만큼 카운트를 빼야함
				//System.out.println(i + ": " + count[i]);
				if(count[i] >= 3) {
					triplet++;
					count[i] -= 3;
					i--; // 같은숫자가 6개있을 경우 이걸 안해주면 그냥 건너뛰어버리기떄문에 triplet == 2가 되지 않는다.
				}
				
				if(count[i] >= 1 && count[i+1] >= 1 && count[i+2] >= 1) {
					run++;
					count[i]--;
					count[i+1]--;
					count[i+2]--;
					i--; // 123345나 123234 처럼 2나 3이 2번반복된경우 이걸 안해주면 4로건너뛰기때문에 run == 2가 되지 않는다.
				}
			}
			
			if(triplet + run == 2) { // 온전히 triplet 또는 run이거나, 두개 모두 1이어야 하므로		
				System.out.println("입력받은 숫자는 Baby-Gin입니다.");
			} else {
				System.out.println("입력받은 숫자는 Baby-Gin이 아닙니다.");
			}
			
		}else {
			System.out.println("6자리로 입력해주세요.");
		}

	}

}

+ Recent posts