seroak   2년 전

DP공부하기위해 푼 문제입니다

두가지 코드의 차이점은 시작점을 하나는 0에서 하나는 1에서 시작했다는 차이점 밖에 없는데 왜 시작점을 0에서 시작한 코드는 틀렸다고 나오고 시작점을 1에서 시작한 코드는 맞았다고 나오는 것인가요?

zenith82114   2년 전

두 번째 코드에서는 arr[1]에 1이 들어가는데, 1은 아무 연산을 하지 않아도 1입니다.

seroak   2년 전

무슨 뜻인지 잘 이해가 되지 않는데 다시 설명해 주실 수 있나요?

zenith82114   2년 전

이 문제에서 입력된 N 값이 1일 경우 출력이 0이어야 정답입니다.

1을 1로 만드는 데 필요한 연산의 횟수는 0이기 때문입니다.

첫 번째 코드는 이를 만족하고, 두 번째 코드는 이를 만족하지 않습니다.

seroak   2년 전

두 번째 코드 26번줄에서 arr[0] =0 을 주고 출력할 때 cout >> arr[N-1]을 통해  N값이 1일때 출력이 0이되는 조건을 만족시킨거 아닌가요?

zenith82114   2년 전

네 제가 코드를 살짝 잘못 봤습니다.

arr을 직접 출력해보니 이렇게 나오네요.

위 코드

0 0 1 1 2 3 2 3 3 2 ...

아래 코드

0 1 2 2 3 4 3 4 4 3 ...

아래 코드에서는 배열을 한 칸씩 왼쪽으로 밀어서 채웠는데

for문은 위 코드랑 똑같으니까 값이 제대로 들어가지 않는 거죠.

seroak   2년 전

아 그렇군요 arr[i/3]과 arr[i/2]를 생각해보면 당연히 틀린건데 제가 이걸 생각 못했네요 

신경써서 답변주셔서 감사합니다

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