onlyhim   7년 전

1이상 100000이하의 정수를 입력받는다 가정했을때

(int N, cin>>N)

N의 값으로 배열의 크기를 설정할수 있는 방법이 있을까요??

도움부탁드립니다

joonas   7년 전

https://en.wikipedia.org/wiki/Variable-length_arra...

C99 버전부터는 그 소스 그대로 사용이 가능합니다.

joonas   7년 전

http://stackoverflow.com/questions/26441916/dynami...

이 링크가 더 도움이 될 것 같네요.

또는 vector를 사용하셔도 됩니다.

flflds0811   7년 전

기본적인 문법에서는 배열의 크기는 변수이면 안 됩니다.

배열의 크기가 변수이고 변수의 크기만큼 배열을 설정하고 싶을 때에는 동적할당을 해서 사용하면 됩니다.

  int N;
 cin >> N;


 int* ar = new int[N];

이렇게 동적할당하여 사용하시면 됩니다.

flflds0811   7년 전

그러나 보통 프로그래밍 문제를 풀 때에는 동적할당을 하는 방식이 아닌 

나올 수 있는 최대크기의 배열 크기로 정적할당하여 사용하는 것이 일반적입니다.

N이 최대 1000까지라고 문제에서 주어진다면 정적으로

int ar[1000];

과 같이 선언하여 작성하시면 됩니다.

보통은 크기에 딱 맞게보다 

int ar[1010];

다음과 같이 코너캐이스를 위해 여유있게 사이즈를 늘려 선언해서 사용합니다.

flflds0811   7년 전

기본 설정의 전역변수와 지역변수의 할당크기 제한이 다르니

배열의 크기가 커지면 전역변수로 선언하여 사용하시기 바랍니다.

그리고 해당 문제 푸신 코드를 살펴봤는데 해당문제는 partial sum을 이용하여 푸는 문제입니다.

partial sum원리는

b-a  f(x) dx    =    b-0 f(x) dx   -   a-0   f(x) dx 

라 생각하시면 되니 잘 생각하셔서 적용하여 풀어보시기 바랍니다.


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