Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 슈퍼 마리오 (2851) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 슈퍼 마리오 (2851) (자바/Java)

luke-king 2024. 5. 11. 15:45

 

 

 

 

 

https://www.acmicpc.net/problem/2851

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int sum = 0;
        int sc = 100;
        int answer = 0;

        for (int i = 0; i < 10; i++) {
            sum += Integer.parseInt(br.readLine());
            if (Math.abs(100 - sum) <= sc) {
                sc = Math.abs(100 - sum);
                answer = sum;
            }
        }
        System.out.println(answer);
    }

}

 

이번 문제는 " 슈퍼 마리오 " 문제다.

아직 필자한테는 쉽다는 말이 나오는 문제는 아니었던 것 같다...

하지만 막상 풀고 문제 이해하면 어떻게 작동하는지 바로 이해되므로 풀고 난 뒤에는 아! 하는 문제였다...

그럼 바로 풀이로 넘어가겠다.

 

1. 변수 sum = 버섯 점수, sc = 100에 근접해야하는 기준 점수, answer = 100에 근접한 결괏값

 

2. 총 10개의 입력값이므로 10번의 루프를 돌리는 반복문을 생성한다.

 

3. 점수를 입력할 때마다 더한다.

 

4. 조건문에 abs() 함수를 써서 100 기준에서 입력값을 뺀 결과 절댓값이 100 보다 작거나 같을 경우 밑에 로직을 실행

 

5. 세 번째 예제 입력을 예시로 들면 조건이 통과할 경우 sc = 60, answer = 40이다.

그럼 다시 올라가 sum = 80이 되고 (40+=40) 조건식 같은 경우 20(절댓값) <= 60(sc) 통과된다.

그럼 sc는 = 20, answer = 80 그렇게 한 번만 더 반복하면 120으로 끝나고 더 이상 조건식에 충족되지 못해 종료된다.

 

(아직 필력이 많이 부족하지만... 계속해서 쉽게 정리할 수 있도록 성장하겠습니다.)