백준 헬멧과 조끼

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

문제

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

입력의 첫째 줄에 맵에 존재하는 헬멧의 개수 N(N은 1000이하의 자연수)과 조끼의 개수 M(M은 1000이하의 자연수)이 주어진다.
둘째 줄에 각 헬멧의 방어력 h[i] (h[i]는 10억 이하의 자연수)가 N개 만큼 주어지며, 셋째 줄에 각 조끼의 방어력 a[i] (a[i]는 10억 이하의 자연수)가 M개 만큼 주어진다.

경수가 얻을 수 있는 방어력의 최댓값을 출력한다.

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

최대 방어력을 구하기 위해 각 배열에서 최대값을 찾았다.
방어력의 최대값이 10억 이하이므로 long 타입을 사용하여 오버플로우를 방지했다.
입력 크기가 최대 1000개로 크지 않아 단순 반복문으로 충분히 빠르다고 생각했다.
BufferedReader와 BufferedWriter를 사용하여 입출력 받았다.

코드로 구현

package baekjoon.baekjoon_27;

import java.io.*;
import java.util.StringTokenizer;

// 백준 15781번 문제
public class Main996 {
    public static void main(String[] args) throws IOException {
        // 입출력 객체 생성
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 첫 줄 입력: 헬멧 수 N, 조끼 수 M
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        // 헬멧 방어력 입력
        st = new StringTokenizer(br.readLine());
        long maxHelmet = 0;
        for(int i = 0; i < N; i++) {
            long helmet = Long.parseLong(st.nextToken());
            if(helmet > maxHelmet) {
                maxHelmet = helmet;
            }
        }

        // 조끼 방어력 입력
        st = new StringTokenizer(br.readLine());
        long maxVest = 0;
        for(int i = 0; i < M; i++) {
            long vest = Long.parseLong(st.nextToken());
            if(vest > maxVest) {
                maxVest = vest;
            }
        }

        // 최대 방어력 출력
        bw.write(String.valueOf(maxHelmet + maxVest));
        bw.newLine();

        // 자원 해제
        bw.flush();
        bw.close();
        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글