suheang

[백준] | JAVA, 자바 | 4892번 - 숫자 맞추기 게임 본문

알고리즘

[백준] | JAVA, 자바 | 4892번 - 숫자 맞추기 게임

suheang 2024. 6. 6. 21:36

https://www.acmicpc.net/problem/4892


문제 요약 :

이 게임을 시작할 때는 친구가 숫자 하나를 머리속에 생각해야 한다. 이 숫자를 n0이라고 하자. 그러고 나서 다음과 같이 게임을 진행한다.

  1. 친구에게 n1 = 3*n0 계산을 하라고 한 뒤, n1이 짝수인지 홀수인지를 말해달라고 한다.
  2. n1이 짝수라면, n2 = n1/2를, 홀수라면 n2 = (n1+1)/2를 계산해달라고 한다.
  3. n3 = 3*n2의 계산을 부탁한다.
  4. 친구에게 n4 = n3/9를 계산한 뒤, 그 값을 말해달라고 한다. (n4는 나눗셈의 몫이다)
  5. 자 이제, n1이 짝수였다면, n0 = 2*n4로, 홀수였다면, n0 = 2*n4+1로 처음 친구가 생각한 숫자를 맞출 수 있다.

n0이 주어졌을 때, n1이 홀수인지 짝수인지와 n4를 구하는 프로그램을 작성

( 각 테스트 케이스에 대해서, 케이스 번호를 출력하고 n1이 짝수라면 'even', 홀수라면 'odd'를 출력하고, n4를 출력 )


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = 1;

        while (true) {
            int n0 = Integer.parseInt(br.readLine());
            if (n0 == 0) break;

            int n1 = 3 * n0;
            boolean isEven = (n1 % 2 == 0);
            int n2 = isEven ? n1 / 2 : (n1 + 1) / 2;
            int n3 = 3 * n2;
            int n4 = n3 / 9;

            if (isEven) {
                System.out.println(num + ". even " + n4);
            } else {
                System.out.println(num + ". odd " + n4);
            }

            num++;
        }
    }
}

 

1. 케이스 번호를 계산할 변수 num 생성
2. while 문 동작, n0을 입력받고 n0이 0이라면 break;
3. n1은 n0 * 3, boolean 변수 isEven 생성해서 n1이 짝수 면 true, 홀수 면 false
4. n2는 isEven이 true 면 n1 / 2, false 면 (n1 +1) / 2
5. n3은 3 * n2
6. n4는 n3 / 9
7. 만약 isEven이 true라면 케이스 번호, .even n4 값 출력
8. false라면 케이스 번호, .odd n4 값 출력
9. num++