백준/Python

[백준] 26215 눈 치우기 (python 파이썬)

노랑꼬리 2022. 12. 22. 22:04

문제링크 : https://www.acmicpc.net/problem/26215

 

26215번: 눈 치우기

집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다.

www.acmicpc.net

 

 

작성코드

 

해설

 

눈을 치우는 규칙은 한번에 한 집 혹은 두 집의 눈을 1만큼 치우는 것이다.

 

한번에 두 집의 눈을 치우는 것이 가장 빠르게 눈을 치울 수 있기 때문에

최대한 두 집을 치워야만 한다.

 

두 가지 경우로 나눌 수 있는데

1. 가장 많은 눈이 쌓인 집의 눈 양이 나머지 쌓인 눈보다 적은 경우

2. 가장 많은 눈이 쌓인 집의 눈 양이 나머지 쌓인 눈보다 클 경우

 

1 의 경우 모든 집을 두번씩 치우고 만약 홀 수 일 경우만 마지막에 한집만 치우면 된다.

결과 : 올림(총 눈의 양 / 2)

 

2의 경우 매번 가장 많이 쌓인 집을 치우면서 다른 집을 치우더라도 가장 많이 쌓인 집 눈이 남아있다.

결과 : 가장 많이 눈이 쌓인 집

maxhouse 는 가장 많은 눈이 쌓인 집이다.

1440 분이 넘게 걸린다면 -1을 출력하라고 조건이 있으니 마지막에 if문으로 조건을 달아 출력한다.