[백준] 슈퍼마리오 - 2851번

2024. 6. 13. 11:35·여러가지/알고리즘 & 자료구조

슈퍼 마리오

1 초 128 MB 24323 10049 8711 41.650%

문제

슈퍼 마리오 앞에 10개의 버섯이 일렬로 놓여져 있다. 이 버섯을 먹으면 점수를 받는다.

슈퍼 마리오는 버섯을 처음부터 나온 순서대로 집으려고 한다. 하지만, 모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다. 중간에 버섯을 먹는 것을 중단했다면, 그 이후에 나온 버섯은 모두 먹을 수 없다. 따라서 첫 버섯을 먹지 않았다면, 그 이후 버섯도 모두 먹을 수 없다.

마리오는 받은 점수의 합을 최대한 100에 가깝게 만들려고 한다.

버섯의 점수가 주어졌을 때, 마리오가 받는 점수를 출력하는 프로그램을 작성하시오.

입력

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

출력

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

예제 입력 1 복사

10
20
30
40
50
60
70
80
90
100

예제 출력 1 복사

100

예제 입력 2 복사

1
2
3
5
8
13
21
34
55
89

예제 출력 2 복사

87

예제 입력 3 복사

40
40
40
40
40
40
40
40
40
40

예제 출력 3 복사

120

 

코드

package 슈퍼마리오;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static final int TEN_MUSHROOM = 10;
    static final int HUNDRED_MUSHROOM = 100;
    public static void main(String[] args) throws IOException {

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

        // 10개의 버섯 점수를 저장하기 위해 선언되었습니다.
        int[] mushRoomArr = new int[TEN_MUSHROOM];
        StringTokenizer st;

        for (int i = 0; i < TEN_MUSHROOM; i++) {
            st = new StringTokenizer(br.readLine()); // 각 줄의 버섯 점수를 버퍼를 통해 읽고 배열에 저장합니다.
            mushRoomArr[i] = Integer.parseInt(st.nextToken());
        }
        br.close();

        int score = 0;
        for(int mushroom : mushRoomArr){
            score += mushroom; // 누적한 점수를 저장합니다.

          // score가 HUNDRED_MUSHROOM (100) 이상인지 확인합니다. 즉, 마리오가 버섯을 먹은 결과가 100을 넘었는지를 검사합니다.
            if(score >= HUNDRED_MUSHROOM){
                int scoreExceeds100 = score - 100;  // score가 100을 초과하는 경우의 차이
                int scoreUnder100 = 100 - (score - mushroom);  // score가 100 미만인 경우의 차이

                if(scoreExceeds100 > scoreUnder100){
                    score -= mushroom; // 더 가까운 점수를 만드는 경우, 마지막에 더한 버섯 점수를 다시 뺍니다.
                                       // 현재 버섯을 먹지 않고 이전 상태로 되돌립니다.
                }
                break; // 이미 정답(최적의 선택)을 찾았기 때문에 더 이상 반복할 필요가 없습니다.
            }
        }
        System.out.println(score);
    }
}

/*

if(score - 100 > 100 - (score - mushroom)){
    score -= mushroom;
}

- 만약 score - 100이 100 - (score - mushroom)보다 크다면, 마리오는 현재 버섯을 먹지 않는 선택을 합니다.
- score - 100은 현재 버섯을 포함했을 때 100을 넘은 양을 나타냅니다.
- 100 - (score - mushroom)은 현재 버섯을 빼고 100에 가깝게 만들기 위해 추가로 먹어야 할 양을 나타냅니다.
- 이 조건은 마리오가 100에 가까운 점수를 만들기 위해 어느 선택이 더 좋은지 판단하는데 사용됩니다.

 */
저작자표시 (새창열림)

'여러가지 > 알고리즘 & 자료구조' 카테고리의 다른 글

[백준] 별자리가될수있다면 - 30821번  (0) 2024.06.13
[백준] 청정순열 - 25176  (1) 2024.06.13
[백준] 암호 만들기 - 1759번  (0) 2024.06.13
[백준] 단어나누기 - 1251번  (0) 2024.06.12
[백준] 지각 - 10419번  (1) 2024.06.12
'여러가지/알고리즘 & 자료구조' 카테고리의 다른 글
  • [백준] 별자리가될수있다면 - 30821번
  • [백준] 청정순열 - 25176
  • [백준] 암호 만들기 - 1759번
  • [백준] 단어나누기 - 1251번
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Docker-compose
    java
    항해99
    Spring WebFlux
    OOP
    자바
    reactor
    완전탐색
    프로그래머스
    Spring Boot
    spring
    파이썬
    ecs
    docker
    SAA
    WebFlux
    AWS
    그리디
    celery
    Python
    mybatis
    FastAPI
    EC2
    Redis
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    시험
    DP
    백준
    취업리부트
    RDS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
[백준] 슈퍼마리오 - 2851번
상단으로

티스토리툴바