Inor
[백준] 2851번 슈퍼 마리오 본문
- 문제 : https://www.acmicpc.net/problem/2851
10개의 버섯이 차례대로 주어지고 슈퍼마리오가 버섯을 순서대로 먹으며 점수를 높이는 상황을 구현하는 문제입니다. 점수가 최대한 100에 가까울 경우에 버섯 먹는 과정을 그만두고 그 점수를 출력합니다. 만약에 98과 102가 나오는 상황에서는 102를 출력하면 됩니다.
- 해결
먼저 버섯을 순서대로 먹도록 구현했고 버섯을 먹으며 다음 단계에 먹을 버섯의 값과 비교해서 어떤 값이 100에 가장 가까운지 확인했습니다. 그리고 만약 102와 98이라는 값이 나오면 100과의 차이가 2 일 경우에 102에 우선순위를 두도록 했습니다. now와 after변수를 이용해서 현재 점수와 다음 버섯을 먹었을때의 점수를 비교했습니다.
- 소스 코드
import java.util.Scanner; public class SuperMario { int numOfMushroom; int[] scores; int result; int now, after; public void solve(){ Scanner sc = new Scanner(System.in); numOfMushroom = 10; scores = new int[numOfMushroom]; for(int i=0;i<scores.length;i++){ scores[i] = sc.nextInt(); } result = scores[0]; for(int i=1;i<scores.length;i++){ now = result; after = result + scores[i]; now = Math.abs(100 - now); after = Math.abs(100 - after); if(after <= now){ result += scores[i]; }else{ break; } } System.out.println(result); } public static void main(String[] args) { SuperMario m = new SuperMario(); m.solve(); } }
'Algorithm > 백준' 카테고리의 다른 글
[백준] 14889번 스타트와 링크 (0) | 2017.12.28 |
---|---|
[백준] 9324번 진짜 메시지 (0) | 2017.12.20 |
[백준] 10250번 ACM 호텔 (0) | 2017.12.10 |
[백준] 11015번 붕어빵 판매하기 (0) | 2017.11.27 |
[백준] 14888번 연산자 끼워넣기 (0) | 2017.11.20 |
Comments