코딩테스트

[JAVA] baby-gin

dackyy 2022. 7. 11. 19:22
반응형
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class BabyGin {

	public static void main(String args[]){
		int cnt = 1;
		ArrayList<Integer> list = new ArrayList<Integer>();
		Scanner sc = new Scanner(System.in);
		System.out.print("6개의 숫자를 입력하세요 : ");
		String[] str = sc.next().split("");		//문자열을 배열에 저장 
		
		for(int i=0;i<str.length;i++)
			list.add(Integer.parseInt(str[i]));	//그대로 arraylist 에 저장
		
		System.out.println(list);
		for(int i=1;i<5;i++)
			if(babyGin(list,i))
				break;
	}
	
	static boolean babyGin(ArrayList<Integer> list, int n) {
		ArrayList<Integer> temp = (ArrayList<Integer>)list.clone();
		System.out.println(temp+ "method in");
		switch(n) {
		case 1:
			if(run(temp) && triplete(temp)) {
				System.out.println(list + "baby-gin!");
				return true; }
			break;
		case 2:
			if(run(temp) && run(temp)) {
				System.out.println(list + "baby-gin!");
				return true; }
			break;
		case 3:
			if(triplete(temp) && run(temp)) {
				System.out.println(list + "baby-gin!");
				return true; }
			break;
		case 4:
			if(triplete(temp) && triplete(temp)) {
				System.out.println(list + "baby-gin!");
				return true; }
			break;
		}
		return false;
	}

	static boolean run(ArrayList<Integer> temp) {
		System.out.println(temp + "run");
		for(int i=0;i<8;i++) {
			if (temp.contains(i) && temp.contains(i+1) && temp.contains(i+2)) {
				temp.remove(temp.indexOf(i));
				temp.remove(temp.indexOf(i+1));
				temp.remove(temp.indexOf(i+2));
				return true;
			}	
		}
		return false;
	}
	
	static boolean triplete(ArrayList<Integer> temp) {
		System.out.println(temp + "triple");
		int tmp;
		for (int i=0;i<temp.size();i++) {
			if (Collections.frequency(temp, temp.get(i)) >= 3) {
				tmp = temp.get(i);
				for(int j=0;j<3;j++)
					temp.remove(temp.indexOf(tmp));
				return true;
			}
		}
		return false;
	}
}
반응형