백준 ZOAC 4

KIMYEONGJUN·2024년 10월 27일
post-thumbnail

문제

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

H, W, N, M이 공백으로 구분되어 주어진다.
(0 < H, W, N, M ≤ 50,000)

강의실이 수용할 수 있는 최대 인원 수를 출력한다.

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

BufferedReader를 사용하여 입력을 받는다.
입력값을 공백으로 분리하여 H, W, N, M을 정수로 변환해준다.
각 행에서 사용할 수 있는 좌석 수는 (H + N) / (N + 1)로 계산한다.
이는 N개의 비어야 할 자리마다 한 명을 앉히는 방식이다.
각 열에 대해서도 비슷하게 (W + M) / (M + 1)로 계산한다.
최종적으로 행 수와 열 수를 곱하여 최대 인원 수를 구한다.
계산된 최대 인원 수를 출력해준다.

코드로 구현

package baekjoon.baekjoon_23;

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

// 백준 23971번 문제
public class Main820 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int H = Integer.parseInt(st.nextToken()); // 행
        int W = Integer.parseInt(st.nextToken()); // 열
        int N = Integer.parseInt(st.nextToken()); // 세로
        int M = Integer.parseInt(st.nextToken()); // 가로

        // 거리두기 수칙을 지키면서 앉을 수 있는 최대 인원 수 계산
        int rows = (H + N) / (N + 1); // 각 N칸 마다 한 명씩 앉을 수 있는 행 수
        int cols = (W + M) / (M + 1); // 각 M칸 마다 한 명씩 앉을 수 있는 열 수

        // 최대 인원 수
        int maxPersons = rows * cols;

        // 출력
        System.out.println(maxPersons);
        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글