[이전 블로그 게시글] 빠른 A+B

2019. 8. 3. 11:52프로그래밍/문제풀이

728x90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
 
#include <stdlib.h>
 
int main() {
 
    int length;
 
    int x, y;
 
 
 
    scanf("%d"&length);
 
    int *numArr= malloc(sizeof(int*length);
 
 
 
    for (int i = 0; i < length; i++) {
 
        scanf("%d %d"&x, &y);
 
        numArr[i] = x + y;
 
    }
 
    for (int j = 0; j < length; j++) {
 
        printf("%d\n", numArr[j]);
 
    }
 
    free(numArr);
 
 
 
}
cs

 

우선 반복문에서 연산을 빠르게 하는 예시를 들어주고있는데 C언어에선 해당없음 (충분히 연산속도가 빠르기 때문..)

 

그냥 말 그대로 첫번째 testcase값이 들어오고 (최대 : 1,000,000) 이를 위해 배열을 생성해야 하는데 int형이므로 최대 4*1,000,000까지 들어와야하는데 너무 메모리 낭비가 심한 것 같아 동적할당으로 배열을 선언하였다

 

동적할당을 사용하기 위해서는 #include <stdlib.h>라는 헤더를 선언해주어야하는데

이 헤더에 malloc과 free 함수가 들어있기 때문이다.

 

이후 numArr이라는 변수를 포인터 형식으로 선언해주고 x,y를 각각 선언해주어 루프 안에 집어넣어 TestCase 수만큼 입력들 받아준다

 

나중에는 배열에서 하나씩 꺼내주듯이 출력을 해주면 정답이다!

728x90