kgch0301   1년 전

게시판의 모든 반례가 다 맞게 출력이 되는데 자꾸 틀리네요.. 반례 좀 알려주실 수 있나요..

또 ans를 0으로 초기화하면 56퍼까지 통과되지만 ans를 dp[i]로 초기화하면 91퍼까지 가더라구요.. 혹시 그 이유도 알 수 있을까요?

제 생각엔 ans = 0으로 하는게 더 정확한 풀이인 것 같아서..

kgch0301   1년 전

ans 값에 따라 통과되는 케이스가 다른 이유는 잘 찾지 못했습니다 ㅜㅜ

ans=0 으로 하는 것이 맞습니다.

 

일단 코드를 수정하다 참고한 반례는 

2

2 15

1 30

answer = 30

&

5

5 10

1 1

1 1

1 1

1 1 

answer = 10

입니다.


dp[i]의 모든 값을 0이라 생각하고 _max의 값을 초기화해줬었는데 수정된 코드는 다음과 같습니다.

i일의 예상시간이 n+1을 넘어가는 상황, 즉 i+t[i]>n+1인 경우 를 제외하고는

dp[i]를 p[i]로 초기화 한 후 (변수 _max를 사용할 필요 없이) dp[i]의 값을 반복문 안에서 초기화 해야했습니다.

n=5인 경우,
i=1일 때 t[1] = 5 p[1]=10
i=2,3,4,5일 때 t[i]=1 p[i]=1

이라 하면

 dp[1]이 ans가 되는데 ans를 구하는 과정이 for문 안에 있어 ans의 값이 갱신이 안됐습니다.

따라서 코드를 i=2부터가 아닌 i=1부터 for문을 돌려 i=1인 경우도 ans의 값을 생각할 수 있도록 코드를 수정했습니다.


쓰다보니 난잡해지네요.. 화이팅입니다.

댓글을 작성하려면 로그인해야 합니다.