백준 남욱이의 닭장

KIMYEONGJUN·2025년 4월 30일
0
post-thumbnail

문제

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

첫째 줄에 총 테스트 케이스의 수 T (T ≤ 25)가, 둘째 줄 부터 T + 1째줄까지 매줄 마다 모든 닭의 다리수의 합 N (1 ≤ N ≤ 300)과 닭의 수 M (M ≤ N ≤ 2M)이 공백을 간격으로 입력된다.

테스트 케이스마다 한줄에 다리가 잘린 닭의 수 U와 멀쩡한 닭의 수 T를 공백을 간격으로 출력한다.

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

BufferedReader를 사용하여 표준 입력 스트림에서 데이터를 읽는다.
첫 번째 줄에서 테스트 케이스의 수 T를 읽는다.
StringBuilder를 사용하여 결과를 처리하기 위해서 사용한다.
T만큼 반복하면서 각 테스트 케이스를 처리한다.
각 줄에서 StringTokenizer를 사용하여 N과 M 값을 분리하고 정수로 변환한다.
위에서 도출한 공식 perfectChickens = N - M 와 oneLeggedChickens = 2 * M - N 를 사용하여 다리가 온전한 닭과 다리가 하나인 닭의 수를 계산한다.
계산된 oneLeggedChickens와 perfectChickens 값을 StringBuilder에 추가하고, 각 테스트 케이스의 결과는 한 줄에 출력되도록 공백과 줄바꿈 문자를 추가한다.
모든 테스트 케이스 처리가 끝나면 StringBuilder에 저장된 내용을 한 번에 출력한다.
BufferedReader를 닫는다.

코드로 구현

package baekjoon.baekjoon_28;

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

// 백준 11006번 문제
public class Main1008 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine()); // 총 테스트 케이스의 수

        for(int i = 0; i < T; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken()); // 모든 닭의 다리수의 합
            int M = Integer.parseInt(st.nextToken()); // 닭의 수

            // 다리가 두 개인 닭의 수 (T) 계산: 총 다리 수에서 총 닭 수를 뺀 값
            // T = N - M
            int perfectChickens = N - M;
            // 다리가 하나인 닭의 수 (U) 계산: 총 닭 수에서 다리가 두 개인 닭 수를 뺀 값
            // 또는 2 * M - N 으로 계산 가능
            // U = M - T = M - (N - M) = 2M - N
            int oneLeggedChickens = 2 * M - N;

            sb.append(oneLeggedChickens).append(" ").append(perfectChickens).append("\n");
        }

        System.out.println(sb.toString());
        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글