반복문 (23.04.21)

·2023년 4월 21일
0

Coding Test

목록 보기
5/39
post-thumbnail

✏️ [문제 1] 가위 바위 보 게임

몇판? : 3

1번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 가위
컴퓨터는 [보]를 선택했습니다.
플레이어 승!
현재 기록 : 1승 0무 0패

2번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 보
컴퓨터는 [보]를 선택했습니다.
비겼습니다.
현재 기록 : 1승 1무 0패

3번째 게임
가위/바위/보 중 하나를 입력 해주세요 : 가위
컴퓨터는 [바위]를 선택했습니다.
졌습니다ㅠㅠ
현재 기록 : 1승 1무 1패

(1) 풀이

		Scanner sc = new Scanner(System.in);
		
		System.out.println("[가위 바위 보 게임]");
		System.out.print("몇 판? : ");
		int round = sc.nextInt();
		
		// 승패 기록용 변수
		int win = 0;
		int draw = 0;
		int lose = 0;
		
		for(int i = 1; i <= round; i++) { // 입력받은 판 수 만큼 반복
			
			System.out.println("\n" + i + "번째 게임");
			System.out.print("가위/바위/보 중 하나를 입력 해주세요 : ");
			String input = sc.next(); // 플레이어가 가위/바위/보 입력
			
			// 컴퓨터 가위/바위/보 정하기(랜덤)
			// 1) 1~3 사이 난수 생성
			// 2) 1이면 가위, 2이면 바위, 3이면 보 지정(switch)
			
			// 난수 생성 방법 : Math.random()
			// -> 0.0 이상 1.0 미만의 난수가 생성됨
			
			int random = (int)(Math.random() * 3 + 1);
			// 0.0 <= x < 1.0
			// 0.0 <= x * 3 < 3.0
			// 1.0 <= x * 3 + 1 < 4.0
			// 1 <= (int)(x * 3 + 1) < 4
			// == 1 이상 4 미만의 정수 == 1 2 3
			
			String com = null; // 컴퓨터가 선택한 가위/바위/보를 저장하는 변수
			// null : 아무것도 참조하고 있지 않음
			
			switch(random) {
			case 1 : com = "가위" ; break;
			case 2 : com = "바위" ; break; 
			case 3 : com = "보" ; break;
			
			}
			
			// 컴퓨터는 [바위]를 선택했습니다.
			System.out.printf("컴퓨터는 [%s]를 선택했습니다.\n", com);
			
			// The local variable com may not have been initialized
			
			// 컴퓨터와 플레이어(기준) 가위 바위 보 판별
			// win, draw, lose 
			
			// String 비교 시 equals() 사용!!
			if(input.equals(com)) { // 비긴 경우
				System.out.println("비겼습니다.");
				draw++;
				
			} else {
				// 간단한 코드
				boolean win1 = input.equals("가위") && com.equals("보");
				boolean win2 = input.equals("바위") && com.equals("가위");
				boolean win3 = input.equals("보") && com.equals("바위");
				
				if(win1 || win2 || win3) {
					System.out.println("플레이어 승!");
					win++;
				} else {
					System.out.println("졌습니다ㅠㅠ");
					lose++;
				}
				
				// 복잡한 코드
                /*
				if(input.equals("가위") && com.equals("보")) {
		               System.out.println("플레이어 승 !");
		               
		        } else if(input.equals("바위") && com.equals("가위")) {
		               System.out.println("플레이어 승 !");
		               
		        } else if(input.equals("보") && com.equals("바위")) {
		               System.out.println("플레이어 승 !");
		               
		        } else {
		               System.out.println("졌습니다ㅜㅜ");
		        }
		         */
			} // else 끝
			
			System.out.printf("현재 기록 : %d승 %d무 %d패\n", win, draw, lose);
			
		}
profile
풀스택 개발자 기록집 📁

0개의 댓글