
항해를 시작한 첫 주차의 목표는 두가지였다. 첫 번째는 강의를 듣고 개인과제를 풀어보는 것이었고, 두 번째는 팀원들과 함께 숫자야구를 구현해보는 것이었다.
숫자야구를 통해 간단한 프로그램을 구현해았는데 여러가지로 기억이 많이 남는 한 주였다. 그 동안 배웠던 조건문과 반복문을 마음껏 써보고, 주어진 조건을 다 만족할 수 있게 프로그램을 짜면서 몰입하며 고민해보기도 했다. 에러나 예기치 못한 문제가 발생했을 때 트러블 슈팅을 해 본 것도 기억에 많이 남았다.
- 컴퓨터는 0과 9 사이의 서로 다른 숫자 3개를 무작위로 뽑습니다.
 
(ex) 123, 759- 사용자는 컴퓨터가 뽑은 숫자를 맞추기 위해 시도합니다.
 - 컴퓨터는 사용자가 입력한 세자리 숫자에 대해서, 아래의 규칙대로 스트라이크(S)와 볼(B)를 알려줍니다.
 
- 숫자의 값과 위치가 모두 일치하면 S
 - 숫자의 값은 일치하지만 위치가 틀렸으면 B
 - 기회는 무제한이며, 몇번의 시도 후에 맞췄는지 기록됩니다.
 - 숫자 3개를 모두 맞춘 경우, 게임을 종료합니다.
 
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> intList = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in);
        Random rd = new Random();
        System.out.println("컴퓨터가 숫자를 생성하였습니다. 답을 맞춰보세요!");
        int count = 0;
        // 랜덤한 수 3개를 만들어 각각 변수에 넣는다.
        int num1 = rd.nextInt(10);
        int num2 = rd.nextInt(10);
        int num3 = rd.nextInt(10);
        while (true) { // 중복제거
            if ((num1 == num2) || (num2 == num3) || (num1 == num3) ) {
                num1 = rd.nextInt(10);
                num2 = rd.nextInt(10);
                num3 = rd.nextInt(10);
            } else {
                break;
            }
        }
        // ArrayList에 각각 추가한다.
        intList.add(num1);
        intList.add(num2);
        intList.add(num3);
        // ArrayList에 넣은 각각의 값에 접근하여 Integer 변수에 할당한다.
        Integer result1 = intList.get(0);
        Integer result2 = intList.get(1);
        Integer result3 = intList.get(2);
        // System.out.println(result1 + "" + result2 + "" + result3); 
        // 컴퓨터가 설정한 랜덤 값 보여주기
        while (true) {
            int ball = 0;
            int strike = 0;
            count++;
            System.out.print(count + "번째 시도 : ");
            int i = sc.nextInt(); // 숫자를 입력받음
            int throw1 = i / 100; // 백의 자리수
            int throw2 = (i % 100)/10; // 십의 자리수
            int throw3 = (i % 100)%10; // 일의 자리수
            // ball 판정 조건
            if((result1 == throw2) || (result1 == throw3)) {
                ball++;
            }
            if ((result2 == throw1) || (result2 == throw3)) {
                ball++;
            }
            if ((result3 == throw1) || (result3 == throw2)) {
                ball++;
            }
            // strike 판정 조건
            if(result1 == throw1) {
                strike++;
            }
            if (result2 == throw2) {
                strike++;
            }
            if (result3 == throw3) {
                strike++;
            }
            // 종료 조건
            if((result1 == throw1) 
            && (result2 == throw2) 
            && (result3 == throw3)) {
                System.out.println(strike + "S");
                System.out.println(count + "번만에 맞히셨습니다.");
                System.out.println("게임을 종료합니다.");
                break;
            }
            // 판정
            System.out.println(ball + "B" + strike + "S");
        }
    }
}
	int throw1 = sc.nextInt();		// 백의 자리
    int throw2 = sc.nextInt();		// 십의 자리
    int throw3 = sc.nextInt();		// 일의 자리
        
    // 이런식으로 단순하게 입력받으려고 생각했는데, 오판이었다.
	// 예를 들어, 576이라는 수를 입력하려고 하면
    5 7 6	// 이렇게 입력해야 하거나
    5
    7
    6
    // 이렇게 입력해야 하는 상황이 발생했다.
	int i = sc.nextInt(); 		// 숫자를 입력받음
	int throw1 = i / 100; 		// 백의 자리수
	int throw2 = (i % 100)/10; 	// 십의 자리수
	int throw3 = (i % 100)%10; 	// 일의 자리수