내가 생각했을때 문제에서 원하는부분
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있고, 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.