본문 바로가기
카테고리 없음

야구 숫자 게임

by 차리하루일기 2024. 9. 13.

lv0 - 야구 숫자 게임 규칙 

3자리 숫자와 위치가 모두 맞으면 STRIKE 출력
숫자는 1-9까지만 구성하기. 각 숫자는 한 번씩만 사용 가능.
숫자와 자리의 위치가 맞으면 스트라이크 (S) 숫자만 맞으면 볼(B)
숫자가 하나도 맞지 않을 경우 아웃 (OUT) 으로 표시

 

lv1 - 정답 숫자 생성하기 

고려사항 3가지

  • 숫자 끼리의 중복 x  
  • 3자리 숫자.
  • 1-9 사이의 숫자. 

두 가지 떠오른 방법.

1. Collections. shuffle(list)를 이용할 것인지

2. 정수의 난수 배열 생성과 크기 배열 생성  변수를 세팅할 지. (math.random()*9 +1) 사용 

 

 

# 1번
public class Main {
    public static void main(String[] args) {
        // 1. 정답 숫자 생성
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 1; i <= 9; i++) {
            list.add(i);
        }
        Collections.shuffle(list);
        List<Integer> answer = list.subList(0, 3); // 정답 리스트
        System.out.println("정답 (디버깅): " + answer); // 디버깅용 출력

        Scanner scanner = new Scanner(System.in);
# 2번
public class Baseball {
    public static void main(String[] args) {
        int numArr[] = new int[3]; // 랜덤으로 뽑은 숫자를 넣기 위한 배열
        int inputArr[] = new int[3]; // 유저가 입력한 숫자를 넣기 위한 배열

        for (int i = 0; i < numArr.length; i++) {
            numArr[i] = (int)(Math.random() * 9 + 1); // 1~9 사이의 랜덤 숫자 생성
            for (int j = 0; j < i; j++) {
                if (numArr[j] == numArr[i]) {
                    i--; // 중복이 있으면 인덱스를 줄여 다시 숫자 생성
                    break;
                }
            }
        }

일단 오늘은 여기까지 ..... 
지금 나오는 정답에 관한 sout은 디버깅용이다. 
추가로 해야할 것 들.

사용자가 입력할 숫자에 관해서 - 반복문(while)을 써도 될듯? try catch 문이 들어갈려나? 일단 고민중, 
if 문을 통해 만약 (!=3 ||  !입력숫자가 1-9) -> 잘못됨 다시 쓰세요 출력
입력값 중복 체크 해봐야 할듯? 

input 한 문자열을 char배열로 전환해서  1 = 2 || 2=3|| 3=1  자리 수 중복 체크하면 될듯???

입력값을 리스트로 마지막에 변환시켜서 출력하면 되지 않을까? 라는 고민을 하며 오늘의 til을 마침