zzzbjs   5년 전

틀렸다고 나오네요..
요리봐도 조리봐도 맞은 것 같은데.. 도와주세욥! ㅠㅅㅠ

djm03178   5년 전

n을 입력받기 전인데, new int[n]; 은 몇 바이트를 할당받을까요?

zzzbjs   5년 전

@djm03178

음 그쪽에 문제가 있나봐요!

제가 초보라서 배열을 연속으로 입력받으려면 저렇게 포인터? 를 써야만 되서 저렇게 했거든요.

공부를 좀더 해보겠습니다.

혹시 힌트를 좀 더 주실 수 있나요?

djm03178   5년 전

프로그램은 위에서 아래 순서로 실행됩니다.

그러면 arr의 크기를 얼마나 지정해야 할지 알게 된 시점에서, new int[n] 을 하면 되지 않을까요?

굳이 처음 선언할 때부터 new를 해야 할 필요가 있을까요?

zzzbjs   5년 전

@djm03178

말씀하신대로  int *arr = new int[n]; 의 위치를 입력 받고 난 뒤로 옮기니까 맞았다고 하네요! 

프로그램이 위에서 아래 순서로 시작되는걸 어렴풋이 알았는데,

변수 선언 같은 경우는 무조건 코드의 맨위? 에 해야한다고 막연하게 생각을 하고 있었나 봅니다.
(정확하게 논리를 몰랐던 것 같네요 ㅠㅠ )

새로운 사실을 알게 되었네요. 정말 감사드립니다 ^ㅁ^..!

djm03178   5년 전

C++에서는 변수 선언은 어느 위치에 해도 상관 없습니다. 말씀하신 것처럼 int *arr = new int[n]; 이라고 한 번에 해도 되지만, int *arr; 이라고만 해두고 나중에 arr = new int[n]; 이라고 써도 됩니다.

그리고 프로그래밍 문제를 풀 때는 딱 주어진 만큼만 할당받으려고 하지 않아도 됩니다. 문제에 n의 최댓값이 10000이라고 주어졌으니까, int arr[10000]; 이라고 하면 배열의 범위를 벗어날 일이 없습니다. 문제를 좀 더 편하게 풀 수 있는 사소한 팁이었습니다.

zzzbjs   5년 전

@djm03178

감사합니다! 저는 메모리? 같은게 행여나 커질까봐 그렇게 했던것 같아요.

저에겐 큰 팁이 되었습니다 ^_^

다시한번 감사드립니다!

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