Inor

[백준] 2851번 슈퍼 마리오 본문

Algorithm/백준

[백준] 2851번 슈퍼 마리오

Inor 2017. 12. 18. 13:15

- 문제 : 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();
	}

}
0 Comments
댓글쓰기 폼