Search

배열6_문제01_max게임

대분류
STEP05 배열
소분류
배열6_문제

영상

문제

package 배열6_문제; /* [문제] 1. 컴퓨터 랜덤하게 최대값을 고르게 한다. 2. 정답이면 해당 값을 0으로 변경한다. 3. 단, 이미 0으로 변경된 위치를 재선택 할 경우 "이미 선택 완료된 위치입니다."라는 메세지를 출력한다. 4. arr배열의 모든 값이 0으로 변경되면, 프로그램은 종료된다. [예시] 랜덤 : 3 11, 87, 42, 0, 24 랜덤 : 3 이미 선택 완료된 위치입니다. 랜덤 : 0 11, 87, 42, 0, 24 (최대값이 아니므로 아무일안생김) */ public class 배열6_문제01_max게임_문제 { public static void main(String[] args) { int[] arr = {11, 87, 42, 100, 24}; } }
Java
복사

해설

package 배열6_문제; import java.util.Arrays; import java.util.Random; /* [문제] 1. 컴퓨터 랜덤하게 최대값을 고르게 한다. 2. 정답이면 해당 값을 0으로 변경한다. 3. 단, 이미 0으로 변경된 위치를 재선택 할 경우 "이미 선택 완료된 위치입니다."라는 메세지를 출력한다. 4. arr배열의 모든 값이 0으로 변경되면, 프로그램은 종료된다. [예시] 랜덤 : 3 11, 87, 42, 0, 24 랜덤 : 3 이미 선택 완료된 위치입니다. 랜덤 : 0 11, 87, 42, 0, 24 (최대값이 아니므로 아무일안생김) */ public class 배열6_문제01_max게임_정답 { public static void main(String[] args) { Random ran = new Random(); int[] arr = {11, 87, 42, 100, 24}; int count = 0; // 0. 반복(무한반복) while(true) { System.out.println(Arrays.toString(arr)); // 4. 게임 종료 // (3-1) 컴퓨터가 정답을 맞춘 횟수가 5회가 되면 게임종료 // (3-2) arr의 모든 요소가 0이면 게임종료 if(count == arr.length) { break; } // 1. 최대값 검색 (최대값, 최대값의 위치) // 예) 100, 3(정답) int maxNum = 0; int maxIndex = 0; for(int i=0; i<arr.length; i++) { if(maxNum < arr[i]) { maxNum = arr[i]; maxIndex = i; } } // 2. 컴퓨터가 랜덤한 인덱스 선택 // 예) r = 1(오답) // 예) r = 3(정답) arr = [11, 87, 42, 0, 24] int r = ran.nextInt(arr.length); System.out.println("r = " + r); // 3. 컴퓨터 선택한 위치가 최대값의 위치인지 검색 // 4. 컴퓨터가 정답을 맞춘 곳을 또 선택했을 때에 대한 예외처리 if(arr[r] == 0) { System.out.println("이미 선택 완료된 위치입니다."); } if(maxIndex == r) { arr[r] = 0; System.out.println("정답!"); count += 1; } } } }
Java
복사