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 + " ");
}
}
}
'Java 응용' 카테고리의 다른 글
Java 응용 (6. 랜덤한 숫자 맞추기) (0) | 2024.04.08 |
---|---|
Java 응용 (5. 이메일 검색 서비스) (0) | 2024.03.14 |
Java 응용 (3. 로또 번호 추첨하기) (0) | 2024.03.05 |
Java 응용 (2. 타자 연습 게임) (0) | 2024.03.04 |
Java 응용 (1. 가위바위보 게임) (0) | 2024.03.04 |