백준 10773번: 제로(문제링크)
**사실 이 문제를 넣은 이유는 오늘이 포인터를 이용하여 문제를 푼 첫 날이기에 기록하고자 글을 만들게 되었다. **

문제에서 파악해야 할 핵심요소 및 마인드맵
- 100,000개의 정수를 어떻게 받아낼 수 있는가?
- 처음에는 배열을 생각하였지만, 배열은 많은 수를 감당할 수 있는 능력이 되지 않는다. 다른 방법을 찾게 되었다.
- 쓴수 지우고 넣고 하는 형식은 무엇이 있을까?
주의사항
- 100,000개의 정수를 감당할 수 있는 메모리가 할당된 배열을 이용한다.
- int* list = (int*) malloc(sizeof(int)*num);
- 최근에 쓴 수에 대한 지우고 넣고 하는 방식은 stack스택을 이용하면 가능하다.
- 준비물: 데이터를 담을 배열(메모리가 할당된), 넣은 위치를 알려주는 top 변수
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# include <stdio.h> | |
# include <stdlib.h> | |
int main() { | |
int num; | |
scanf("%d", &num); | |
int* list = (int*)malloc(sizeof(int)*num); //메모리를 동적으로 할당하고 싶으므로 넣는 코드!! 가장 중요하다 | |
int i, temp,sum=0; | |
int top = 0; | |
for (i = 0; i < num; i++) { | |
scanf("%d", &temp); | |
if (temp != 0) | |
list[top++] = temp; | |
else top--; | |
} | |
for (i = 0; i < top; i++) { | |
sum += list[i]; | |
} | |
printf("%d", sum); | |
free(list); | |
} |
'Coding > Basic' 카테고리의 다른 글
[운영체제] 전체 기본 개념 정리 (2) | 2020.07.03 |
---|---|
[Algorithms] Sorting정렬 한꺼번에 살펴보기 (0) | 2019.11.08 |
[DataStructures] 정적/동적 메모리 할당 간단 개념 (0) | 2019.10.03 |
[DataStructures] Stack스택 (0) | 2019.10.03 |
[Basic] 숫자 길이 및 배열 전환 함수 살펴보기 c언어 (0) | 2019.09.28 |