[Java] (실습) Baby-gin

2022. 7. 11. 21:53·Java/코딩테스트 연습 & 실습

필요하다고 생각한 메서드 :

run( ArrayList<Integer> arr ) : arr 안에 i, i+1, i+2가 존재하면 true 반환

triplete( ArrayList<Integer> arr ) : arr 안에 i가 3번 이상 존재하면 true 반환

caseCheck( ArrayList<Integer> arr ) : RR RT TR TT 가 둘 다 true이면 true 반환 , 아니면 flase

babyGin( String str ) : 입력받은 문자열을 한 글자씩 int로 변환해 어레이리스트에 저장

                                    caseCheck메서드가 true면 baby-gin 출력

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Q3 {
	static int cnt = 0;
	static ArrayList<String> result = new ArrayList<>();
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		try {
			System.out.println("6개의 숫자를 입력하세요 : ");
			String user_input = sc.next();

			Q3 q3= new Q3();
			q3.babyGin(user_input);
			
		} catch(Exception e) {
			System.out.println("잘못된 입력입니다.");
		}
		
	}
	
	//Baby-gin 확인하는 메서드
	public void babyGin(String str) {
		ArrayList<Integer> arr = new ArrayList<>();
		
		// 문자열 한 글자 씩 int로 변환 후 arr에 저장
		for (int i = 0; i < str.length(); i++) {
			arr.add(Character.getNumericValue(str.charAt(i)));
		}
		
		//caseChek가 true이면 Baby-gin
		if(caseCheck(arr)) {
			System.out.println("\nbaby-gin입니다 !");
		} else {
			System.out.println("baby-gin이 아닙니다.");
		}
	}
	
	// rr tr rt tt case 체크
	public boolean caseCheck(ArrayList<Integer> arr) {
		ArrayList<Integer> temp;
		
		//case1 R R
		temp = (ArrayList<Integer>)arr.clone();
		if(run(temp) && run(temp)) {
			for(String s : result) {
				System.out.print(s+" ");
			}
			result.clear();
			return true;
		} 
		
		//case2 R T
		temp = (ArrayList<Integer>)arr.clone();
		if(run(temp) && triplete(temp)) {
			for(String s : result) {
				System.out.print(s+" ");
			}
			result.clear();
			return true;
		} 
		
		//case3 T R
		temp = (ArrayList<Integer>)arr.clone();
		if(triplete(temp) && run(temp)) {
			for(String s : result) {
				System.out.print(s+" ");
			}
			result.clear();
			return true;
		} 
		
		//case4 T T
		temp = (ArrayList<Integer>)arr.clone();
		if(triplete(temp) && triplete(temp)) {
			for(String s : result) {
				System.out.print(s+" ");
			}
			result.clear();
			return true;
		}
		return false;
	}
	
	// run
	public boolean run(ArrayList<Integer> arr) {
		int n1;
		int n2;
		int n3;
		
		for (int i = 0; i < arr.size(); i++) { 
			if (arr.contains(arr.get(i)) && arr.contains(arr.get(i)+1) && arr.contains(arr.get(i)+2)) { //i, i+1, i+2가 포함되면
				n1 = arr.get(i); n2 = arr.get(i)+1; n3 = arr.get(i)+2;
				result.add(""+n1+n2+n3);
				arr.remove(arr.indexOf(n1));
				arr.remove(arr.indexOf(n2));
				arr.remove(arr.indexOf(n3));
				cnt++;
				return true;
			}
		}
		return false;
	}
	
	//triplete
	public boolean triplete(ArrayList<Integer> arr) {
		int temp;
		
		for(int i=0; i<arr.size(); i++) {
			if(Collections.frequency(arr, arr.get(i))>=3) { //frequency 찾는 값이 몇번 나오는지 리턴, -> 3번 이상이면 triplete
				temp = arr.get(i);
				result.add(""+arr.get(i)+arr.get(i)+arr.get(i));
				arr.remove(arr.indexOf(temp));
				arr.remove(arr.indexOf(temp));
				arr.remove(arr.indexOf(temp));
				cnt++;
				return true;
			}
		}
		return false;
	}
}

'Java > 코딩테스트 연습 & 실습' 카테고리의 다른 글

[Java] 스택을 이용한 후위표기 계산기  (0) 2022.07.14
[Java] 이진검색 재귀함수로 구현하기  (0) 2022.07.13
[Java] (실습) 자바 정돈된 수  (0) 2022.07.11
[Java] (실습) 자바 로또 프로그램  (0) 2022.07.11
[Java] (실습) 가장 작은 수로 변환  (0) 2022.07.11
'Java/코딩테스트 연습 & 실습' 카테고리의 다른 글
  • [Java] 스택을 이용한 후위표기 계산기
  • [Java] 이진검색 재귀함수로 구현하기
  • [Java] (실습) 자바 정돈된 수
  • [Java] (실습) 자바 로또 프로그램
현기
현기
  • 현기
    현기의 개발블로그
    현기
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • Front-End (39)
        • Next (5)
        • React (8)
        • React Native (11)
        • Flutter (0)
        • Vue (1)
        • JSP (9)
        • HTML, CSS, JS (5)
      • Back-End (16)
        • Node.js (3)
        • Spring (8)
        • Flask (1)
        • AWS (4)
      • DB (5)
        • Oracle (4)
        • MySQL (1)
      • Python (7)
      • Java (27)
        • 자바 이론 (17)
        • 코딩테스트 연습 & 실습 (10)
      • 자료구조 & 알고리즘 (7)
        • 코딩테스트 (6)
        • 알고리즘 (1)
      • 블록체인 (0)
      • 프롬프트 엔지니어링 (0)
      • CS 지식 (5)
      • IT뉴스 (0)
      • 일상 (3)
      • etc (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    next-intl
    큐
    서블릿
    react
    쓰레드
    Express
    자바 스프링
    React Native
    자바스크립트
    IS-A
    파이썬
    Java
    Spring
    자바
    리액트 네이티브
    JSP
    상속
    react-native-chart-kit
    JDBC
    그리디
    오라클
    티스토리챌린지
    node.js
    REST API
    오블완
    DI
    포스트맨
    스택
    Python
    React Native Chart
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
현기
[Java] (실습) Baby-gin
상단으로

티스토리툴바