백준 슈퍼 마리오

KIMYEONGJUN·2025년 3월 1일
post-thumbnail

문제

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

총 10개의 줄에 각각의 버섯의 점수가 주어진다.
이 값은 100보다 작거나 같은 양의 정수이다.
버섯이 나온 순서대로 점수가 주어진다.

첫째 줄에 마리오가 받는 점수를 출력한다.
만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.

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

입력 처리: BufferedReader를 사용하여 10개의 점수를 입력받는다.
점수 합산: 각 버섯의 점수를 누적하여 currentScore를 계산한다.
최적 점수 찾기: currentScore가 100을 초과할 경우, 이전에 기록된 closestScore와 비교하여 더 가까운 값을 유지한다.
결과 출력: StringBuilder를 사용하여 최종 점수를 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

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

// 백준 2851번 문제
public class Main948 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int[] scores = new int[10];
        int totalScore = 0;

        // 점수 입력 받기
        for(int i = 0; i < 10; i++) {
            scores[i] = Integer.parseInt(br.readLine());
            totalScore += scores[i];
        }

        int closestScore = 0;
        int currentScore = 0;

        // 점수 계산
        for(int i = 0; i < 10; i++) {
            currentScore += scores[i];
            if(currentScore > 100) {
                if(closestScore < currentScore - 100) {
                    break;
                }
            }
            if(Math.abs(100 - currentScore) < Math.abs(100 - closestScore) ||
                    (Math.abs(100 - currentScore) == Math.abs(100 - closestScore) && currentScore > closestScore)) {
                closestScore = currentScore;
            }
        }

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

마무리

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

profile
Junior backend developer

0개의 댓글