컴공 일기124
게시글 주소: https://orbi.kr/00057548153
스택(Stack)이라는 자료구조를 이용한 응용 예제를 풀어봤습니다. 역시 알고리즘은 자료구조에 의존적일 수밖에 없단 생각이 강하게 드는 예제입니다. 취업 때문에 코딩 테스트 문제로 모두들 알고리즘으로 도배가 된 형국이지만, 개발이라고 하는 분야를 조금 넓게 본다면, 알고리즘이라는 것이 어쩌면 자그마한 일부일 뿐이란 생각이 드는군요.
물론, 알고리즘을 잘하는 사람이 자료구조의 제반적 지식을 갖고 있을 가능성이 높겠지만, 개발자 지망생의 모든 이목이 알고리즘으로 모두 쏠리는 형국은 컴퓨터 과학을 친애하는 입장으로서 아쉽습니다. 코딩 문제 푸는 것도 중요하지만, 메모리 쫓아가면서 컴퓨터가 소프트웨어적으로 어떻게 동작하는지 관찰하는 것도 중요하지 않나..
여튼 이번 방학에는 자료구조와 컴퓨터 네트워크 이론에 더 많은 힘을 쏟을 생각입니다. 기초 베이스를 잘 닦아놓고, 여기에서 갖가지 것들을 경험해야... 스도쿠 풀듯이 챌린저 문제도 좀 풀고 그러는 거지.. 무지성으로 코딩 문제 푸는 것은 좋은 공부 방향은 아니란 생각입니다. 그래서 저는 하루에 딱 한 문제씩만 푸는 방향으로 가고 있고, 그 외 시간에는 기초 수학이나 자료구조, 컴퓨터 네트워크 이론, 컴퓨터 구조.. 이 쪽에 시간을 쏟으려구요.
코딩 테스트야 수능 문제처럼 정형화되어 있는데다(다시 말하면 각 잡고 공부하면 된다는 얘깁니다.), 당장 취업을 할 것도 아니고...(그리고 또한, 취업을 할 거라면 내 영혼을 울리는 기업을 찾아갈 것이라서 대기업보다는 스타트업 쪽에 생각이 많습니다.) 급하지 않으니, 이 참에 조금 더 여유로운 공부를 할 생각입니다.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct tagNode
{
int Data;
}Node;
typedef struct tagArrayStack
{
int Capacity;
int Top;
Node* Nodes;
}ArrayStack;
void AS_CreatStack(ArrayStack** Stack, int Capacity)
{
(*Stack) = (ArrayStack*)malloc(sizeof(ArrayStack));
(*Stack)->Nodes = (Node*)malloc(sizeof(Node) * Capacity);
(*Stack)->Capacity = Capacity;
(*Stack)->Top = 0;
}
void AS_push(ArrayStack* Stack, int Data)
{
int position = Stack->Top;
if (Data == 0)
{
Stack->Nodes[position - 1].Data = 0;
Stack->Top--;
}
else
{
Stack->Nodes[position].Data = Data;
Stack->Top++;
}
}
int AS_IsEmpty(ArrayStack* Stack)
{
return(Stack->Top == 0);
}
int AS_pop(ArrayStack* Stack)
{
int position = --(Stack->Top);
return Stack->Nodes[position].Data;
}
int main()
{
int i = 0;
int N;
int sum = 0;
ArrayStack* Stack = NULL;
scanf("%d", &N);
AS_CreatStack(&Stack, N);
for (i = 0; i < N; i++)
{
int tmp = 0;
scanf("%d", &tmp);
AS_push(Stack, tmp);
}
while( ! AS_IsEmpty(Stack))
{
sum += AS_pop(Stack);
}
printf("%d", sum);
}
[실행결과]
10
1
3
5
4
0
0
7
0
0
6
7
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
두 가지 공지사항 24. 06. 09 ㅣ 첫 번째 공지ㅣ업그레이드 중 안녕하세요...

볼때마다 어지럽군요 대단하십니다
CS 지식을 코드로 옮겨놓은 것 뿐! 사실은 간단한 논리랍니다 :)