acruxdy   2년 전

최대값이 몇 번째인지 출력을 하라는데 제 코드에서 어떻게 수정해야 할 지를 모르겠어요...

djm03178   2년 전

최댓값 자체를 기억하지 말고, 최댓값이 들어있는 인덱스를 기억해보세요.

acruxdy   2년 전

최댓값 자체를 기억하지 말라는 게 무슨 말씀인지 잘 모르겠어요. 그리고 이 문제에 한하여 최댓값이 들어 있는 인덱스는 8 아닌가요?

djm03178   2년 전

좀 더 자세하게 알려드리자면,

  1. 8번째 줄이 실행될 때 s[0]에는 쓰레기값이 들어 있습니다. 만일 이 쓰레기값이 임의의 큰 수라면, 이후에 아무리 큰 수가 입력으로 들어와도 maximum이 갱신이 안 될 것입니다.
  2. 지금 코드는 최댓값만 maximum에 저장하고 있습니다. 그런데 문제에서는 그 값이 어디 있었는지까지 알아내야 하죠? 그런데 최댓값만 가지고는 위치까지 바로 알 수가 없습니다. 하지만 현재까지의 최댓값이 배열의 어느 인덱스에 들어있는지만 저장해도 그 값이 무엇인지까지 바로 알 수 있습니다. 그래서 최댓값을 기억하지 말고, 최댓값이 들어있던 위치를 기억하라는 것입니다. 예를 들면 maximum의 의미를 바꿔서 "현재까지의 최댓값"이 아니라 "현재까지의 최댓값이 들어있는 인덱스"를 저장한다고 합시다. 처음에 이를 0으로 설정해두고, 하나씩 입력받으면서 s[maximum] < s[i]이면, maximum = i로 바꿔주기만 하면 되겠죠?
  3. 문제에서 출력하라는 "몇 번째 수"는 1부터 세는 것이고, 배열에는 0번째부터 저장했으니, 출력할 때는 그 값에 1을 더해서 출력해야 됩니다. 지금의 16번째 줄은 무조건 SIZE가 출력될 수밖에 없는데, 그 이유는 잘 생각해 보세요.

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