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을 마침