문제 출처
1. 문제설명
- 문제의 설명이 길기 때문에 필요한 정보만 요약하겠다.
- 계란으로 계란을 치려고 한다.
- 각 계란은 내구도(
s
)와 무게(w
)가 있다.
- 계란으로 계란을 치면, 계란의 내구도는 상대 계란의 무게만큼 깎인다.
- 계란 치는 과정
- 가장 왼쪽의 계란을 든다.
- 들고 있는 계란으로 깨지지 않은 다른 계란 하나를 친다.
- 손에 든 계란이 깨졌거나 깨지지 않은 다른 계란이 없으면 치지 않고 넘어간다.
- 들고 있는 계란이 가장 오른쪽에 위치한 계란이라면 종료한다.
2. 알고리즘 설계
- DFS 문제이다.
- 1번부터
N
번까지의 계란을 깬다.
- 시작점은 1, 2, 3, … 과 같이 오른쪽으로만 갈 수 있다.
for(int i=0; i<n; i++)
- 무게만큼 내구도를 감소시켜주고,
s[cnt] -= w[i]
, s[i] -= w[cnt]
- 내구도가 0 이하라면 카운팅한다.
- 중요한 건 이하라는 것이다. 음수값이 아닌!
if(s <= 0) tmp++
3. 전체 코드
4. 소감
- 위에 설명했듯이 0 이하가 되면 카운팅해야한다.
s < 0
으로 코드를 작성해서 맞왜틀을 시전했다.