백준 숫자 맞추기 게임

KIMYEONGJUN·2024년 12월 26일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있고, n0으로 이루어져 있다. (0 < n0 < 1,000,000)
입력의 마지막 줄에는 0이 하나 주어진다.

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

내가 이 문제를 보고 생각해본 부분

BufferedReader 입력값을 읽어준다.
StringBuilder를 선언해주는 이유는 문자열로 저장하기 위한 객체이기때문이다.
변수 선언:
input은 사용자 입력을 저장하고, caseNumber는 테스트 케이스의 번호를 추적한다.
while문을 이용해서 사용자가 0을 입력할 때까지 계속 실행해준다.
readLine() 메서드를 사용하여 입력을 읽고, trim()으로 공백을 제거해준다.
n0 변환:
입력된 문자열을 정수로 변환해준다.
종료 조건:
n0이 0이면 루프를 종료한다.
n1 계산:
n0의 3배를 계산하여 n1에 저장해준다.
짝수/홀수 판단:
n1이 짝수인지 홀수인지 판단하고, 그 결과를 parity 변수에 저장해준다.
n2 계산:
parity에 따라 n2를 계산한다.
n1이 짝수이면 n2 = n1 / 2
n1이 홀수이면 n2 = (n1 + 1) / 2
n3 계산:
n2의 3배를 계산하여 n3에 저장한다.
n4 계산:
n3를 9로 나눈 몫을 계산하여 n4에 저장한다.
결과 저장:
StringBuilder에 케이스 번호, 짝수/홀수 정보, n4 값을 추가해준다.
caseNumber는 후에 1 증가시켜준다.
결과 출력:
모든 결과를 한 번에 출력해준다.

코드로 구현

package baekjoon.baekjoon_25;

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

// 백준 4892번 문제
public class Main880 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder(); // StringBuilder 사용
        String input;
        int caseNumber = 1;

        while(true) {
            input = br.readLine().trim(); // 입력값의 앞뒤 공백 제거
            int n0 = Integer.parseInt(input);
            if(n0 == 0) {
                break;
            }

            // n1 계산
            int n1 = 3 * n0;
            String parity = (n1 % 2 == 0) ? "even" : "odd";

            // n2 계산
            int n2;
            if(parity.equals("even")) {
                n2 = n1 / 2;
            } else {
                n2 = (n1 + 1) / 2;
            }

            // n3 계산
            int n3 = 3 * n2;

            // n4 계산
            int n4 = n3 / 9;

            // 결과를 StringBuilder에 추가
            sb.append(caseNumber++).append(". ").append(parity).append(" ").append(n4).append("\n");
        }

        // 최종 결과 출력
        System.out.print(sb.toString());
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글

관련 채용 정보