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