Java 응용

Java 응용 (4. 숫자 위치 맞추기)

Kw_w 2024. 3. 6. 18:45

1에서 9까지 난수 3개를 발생하고 (중복허용안됨) 사용자로부터 1에서 9사이의 정수 3개를 입력 받는다.

같은 위치에 같은 숫자면 PASS, 위치는 다르지만 숫자가 같으면 FAIL 일 때 PASS 와 FAIL의 총 카운트를 출력하시오

ex) 컴퓨터의 난수가 1, 3, 5 라면

case 1 : 사용자의 입력이 1 5 9 라면

1 PASS | 1 FAIL 출력

case 2 : 사용자의 입력이 3 5 9 라면 

0 PASS | 2 FAIL 출력

 

[코딩순서]

1. 난수 3개 발생

2. 중복 제거

3. 사용자 입력

4. PASS, FAIL 로직

  • 같은 포지션이면 PASS  com[i] == user[i]
  • 그 외 FAIL com[1] = user[2]

Code

import java.util.Scanner;

public class ProblemTest {
    public static void main(String[] args) {
        int[] NumR = new int[3];
        boolean[] pickCheck = new boolean[10];
        Scanner sc = new Scanner(System.in);
        int[] MyNumR = new int[3];

        // NumR을 초기화
        for (int i = 0; i < NumR.length; i++) {
            while (true) {
                int randNum = (int) (Math.random() * 9) + 1;
                if (!pickCheck[randNum]) {
                    pickCheck[randNum] = true;
                    NumR[i] = randNum;
                    break;
                }
            }
        }

        while (true) {
            System.out.println("1에서 9사이의 숫자를 중복없이 3개 입력하세요 : ");
            for (int i = 0; i < MyNumR.length; i++) {
                MyNumR[i] = sc.nextInt();
            }

            System.out.println();
            System.out.println("Your Number :");
            for (int num1 : MyNumR) {
                System.out.print(num1 + " ");
            }

            var PassCnt = 0;
            var FailCnt = 0;

            for (var i = 0; i < 3; i++) {
                if (NumR[i] == MyNumR[i]) PassCnt++;
            }
            if (NumR[0] == MyNumR[1] || NumR[0] == MyNumR[2]) FailCnt++;
            if (NumR[1] == MyNumR[0] || NumR[1] == MyNumR[2]) FailCnt++;
            if (NumR[2] == MyNumR[0] || NumR[2] == MyNumR[1]) FailCnt++;

            System.out.println();
            System.out.println("PASS : " + PassCnt + " | FAIL : " + FailCnt);

            // NumR과 MyNumR이 같을 때 반복 종료
            if (PassCnt == 3) {
                System.out.println("Congratulations! You guessed the correct number.");
                break;
            }
        }

        System.out.println("Random Number : ");
        for (int num : NumR) {
            System.out.print(num + " ");
        }
    }
}