오답노트 (Wrong Answer Note)
[자바] 야구게임 만들기
나수비니
2023. 9. 30. 23:21
728x90
* 본 포스팅은 개인공부를 위한 오답노트입니다.
* This posting is an incorrect answer note for personal study.
Step.1 문제 정의 (Define the problem) |
1 ~ 9의 숫자 중 3가지 숫자 입력 (중복 불가)2. 숫자와 자리가 모두 일치할 경우 Strike3. 자리는 일치하지 않지만 숫자는 일치할 경우 Ball4. 숫자와 자리 모두 일치하지 않을 경우 Out
EX) 정답: 1 7 3 입력: 3 1 5 >>> 2b 입력: 1 5 6 >>> 1s |
Step.2 문제 분석 (Analyze the problem) |
1. 랜덤 난수를 배열에 중복없이 입력하기
2. 컴퓨터 배열과 유저 입력 배열의 중복 확인하기
3. 스트라이크/볼 판정하기
Step.3 브레인스토밍 (Brainstorm) |
1. 변수 선언하기 (Declare a variable)
- 필요한 것
- 유저로부터 정답을 입력받기 위한 Scanner 객체 sc
- 컴퓨터로부터 1~9까지의 랜덤한 숫자를 생성할 객체 rd
- 컴퓨터로부터 랜덤한 숫자를 담을 int 배열
- 유저로부터 입력된 숫자를 담을 int 배열
- 볼, 스트라이크, 도전횟수를 카운트 할 변수 3가지
2. 중복없이 1~9까지 범위의 랜덤 숫자를 컴퓨터로부터 생성하기
- 생각한 것
- ArrayList
- Array
- 고려할 것
- 컴퓨터가 중복된 숫자를 입력할 경우, 반환하기
3. 유저로부터 3개의 숫자를 입력받기
- 생각한 것
- Scanner 사용
4. 스트라이크/볼/판정하기
- 생각한 것
- IF문 사용
Step.4 결정 (Make a decision) |
1. 랜덤 변수 생성 : Math.random()
2. 스트라이크/볼 판정: for if문
Step.5 실행 (Implement) |
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class BaseBallGame5 {
public static void main(String[] args) {
int[] com = new int[3];
int[] user = new int[3];
int count = 10;
Scanner sc = new Scanner(System.in);
Random rd = new Random();
//1.중복없이 1~9까지 범위의 랜덤 숫자를 컴퓨터로부터 생성하기
// 컴퓨터 랜덤난수 1~9까-지 생성
for(int i=0; i<com.length; i++) {
com[i] = rd.nextInt((int)(Math.random()*9)+1);
//중복 제거
for(int j=0; j<i; j++) {
if(com[i] == com[j]) {
i --;
break;
}
}
}
//2.유저로부터 3개의 숫자를 입력받기
while(count >0) {
int strike = 0;
int ball = 0;
System.out.println("--------");
System.out.println("숫자를 입력하세요.");
System.out.println("--------");
for (int i = 0; i < user.length; i++) {
user[i] = sc.nextInt();
}
System.out.println("입력한 숫자는" + Arrays.toString(user) + "입니다.");
//3. 스트/볼/아웃 판단하기
for (int i=0; i<com.length; i++) {
for(int j=0; j<user.length; j++) {
if(com[i] == user[j]) {
if( i == j) {
strike ++;
}
else
ball ++;
}
}
}
if(strike == 3) {
System.out.println("승리!");
break;
}
System.out.println("---------");
count--;
if(count==0) {
System.out.println("컴퓨터가 승리!");
break;
}
else {
System.out.println("strike: " + strike + " ball: " + ball );
System.out.println(count + ": 잔여 도전기회");
}
}
}
}
Step.6 평가 (Evaluate) |
1. HashSet, ArrayList 사용해볼 것
2. 완벽하게 구현하지 못한 것
- 유저로부터 입력받은 변수 중복 체크