kwon5891   3년 전

20,22 번째 라인에서 배열을 하나 선언하는데요 입력값에 따라 메모리 크기를 바꿔주려고 

테스트 케이스로 들어온 N중에 가장 큰 값을 가지고 P 배열의 그 최댓값을 가지는 N의 인덱스 만큼만 값을 구하고 값을 출력하도록 코드를 짰습니다.

( 테스트 케이스중 가장 큰값까지 구하면 나머지 테스트 케이스는 dp기 때문에 이미 계산되어 있으므로 배열을 저 이상 할당할 필요가 없다고 생각하였습니다)

P = new long[max+1] 이런식으로 짰습니다.

이렇게 해놓고 제가 직접 테스트 돌리니까 N=100일때도 정답이 잘 나오더라구요.

그래서 제출을 했는데 틀렸다고 뜨네요.

그래서 뭔지 한참을 찾아도 뭐가 틀린지 모르겠어서 검색해보니까 다른 정답 코드들은 그냥 P = new long[101]로 처음부터 선언할때 최댓값으로 선언을 하셨길래

저도 101로 바꿔서 해보았는데 정답입니다! 가 뜨더라구요.. 저는 왜 이 차이가 정답과 실패를 만드는지 궁금합니다.

알려주시면 정말 감사하겠습니다. 

plan222   3년 전

인덱스를 1~max까지 사용하시니까 배열 크기는 max+1개를 잡아야 합니다.

P = new long[max] 이렇게 하면 P[max-1]까지 밖에  못쓰겠죠?


제가 자바를 잘 몰라서 왜 100인 경우에 정상적으로 출력되었는지는 잘 모르겠습니다.

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