반응형
dackyy
대기의 연대기
dackyy
전체 방문자
오늘
어제
  • 분류 전체보기 (49)
    • java (7)
    • 코딩테스트 (23)
    • python (10)
    • Network (2)
    • Web (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • 비교 연산자
  • https
  • 배열
  • SSL
  • 반복문
  • 배열생성
  • 비트 연산자
  • 연산
  • 시프트 연산자
  • 제어문
  • 증감 연산자
  • 기본 자료형
  • 조건문
  • 논리 연산자
  • 참조 자료형
  • 자료형
  • 산술 연산자
  • switch
  • TLS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dackyy

대기의 연대기

코딩테스트

[JAVA] baby-gin

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;
	}
}
반응형

'코딩테스트' 카테고리의 다른 글

[JAVA] 이진탐색 재귀함수 구현  (0) 2022.07.13
[JAVA] 정수 받아 작은값부터 출력하기 (순열)  (0) 2022.07.11
[JAVA] 정돈된 수 출력  (0) 2022.07.11
[JAVA] 입력받은수 가장 작은 수로 변환  (0) 2022.07.11
[JAVA] 로또 당첨 & 모든 경우의 수 출력  (0) 2022.07.11
    '코딩테스트' 카테고리의 다른 글
    • [JAVA] 이진탐색 재귀함수 구현
    • [JAVA] 정수 받아 작은값부터 출력하기 (순열)
    • [JAVA] 정돈된 수 출력
    • [JAVA] 입력받은수 가장 작은 수로 변환
    dackyy
    dackyy

    티스토리툴바