[백준/파이썬] 13170번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 13170번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
마나 수정 M개가 신 나무스트럼에 떨어졌다. 마나 수정이 떨어진 후 되살아난 시체들로부터 마을을 지켜야 한다. 마을의 수장 Marko는 전투를 통해 되살아난 시체들을 만든 마법사 Kul’den을 생포하는 데 성공했다. Kul’den을 심문한 결과 M개의 마나 수정이 되살아난 시체에게 마나 공급을 하고 있으며, 이것들을 모두 파괴하면 되살아난 시체들이 멈춘다는 사실을 알아내었다. Marko는 마을에 있는 둔 망치를 사용해 마나 수정을 모두 파괴하기로 했다. 둔 망치는 한 번에 하나의 마나 수정에만 힘을 가할 수 있다.
Marko가 둔 망치를 이용해 마나 수정을 하나씩 파괴하던 도중, 큰 폭발이 일어났다. 이 폭발로 묶인 채로 마나 수정의 파괴를 옆에서 지켜보던 Kul’den은 부상을 입었지만, 되살아난 시체를 불러온 당사자를 치료해줄 마을 사람은 없었다.
마을의 대 마법사 매디브는 폭발의 원인을 분석했고, 그 결과 신 나무스트럼 마을에 떨어진 M개의 마나 수정 중 일부에 큰 마나가 응집되어 있는 것을 알게 되었다. …
입력 요약
첫 번째 줄에 네 개의 정수 N, K, P, W가 주어진다. 이는 순서대로 남아있는 마나 수정의 수 N(1 ≤ N ≤ 1,000)과 마나가 응집된 마나 수정의 강도 순위를 나타내는 K(1 ≤ K ≤ N), 둔 망치의 최대 파워 P(1 ≤ P ≤ 2,000), 폭발 위험이 있는 힘 차이 W(1 ≤ W ≤ P)를 의미한다. 각 마나 수정의 강도를 표현 불가능한 경우는 주어지지 않는다.
출력 요약
최악의 경우 마나가 응집된 마나 수정을 파괴하기까지 내리치는 횟수를 최소화하는 전략을 사용했을 때, 마나가 응집된 마나 수정을 파괴하기까지 망치를 내리치는 최대 횟수를 출력한다.
코드
import math
n,k,p,w=map(int,input().split())
print(math.ceil(p/w))
설명
핵심은 구현 관점에서 마나 수정 M개가 신 나무스트럼에 떨어졌다. 마나 수정이 떨어진 후 되살아난 시체들로부터 마을을 지켜야 한다. 마을의 수장 Marko는 전투를 통해 되살아난 시체들을 만든 마법사 Kul’den을 생포하는 데 성공했다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기