본문 바로가기

전체 글31

2. 큐(queue) [자료구조 & 알고리즘] 2.1 큐(queue)란? 스택의 경우, 나중에 들어온 데이터가 먼저 나가는 구조인데 반하여 큐(queue)는 먼저 들어온 데이터가 먼저 나가는 구조로 이러한 특성을 선입선출(FIFO : First In First Out)이라고 한다. 큐의 예로는 매표소에서 표를 사기 위하여 늘어선 줄을 들 수 있겠다. 줄에 있는 사람들 중 가장 앞에 있는 사람(즉, 가장 먼저 온 사람)이 가장 먼저 표를 사게 될 것이다. 나중에 온 사람들은 줄의 맨 뒤에 서야 할 것이다. 큐는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조를 가지고 있다. 구조상으로 큐가 스택과 다른 점은 스택의 경우, 삽입과 삭제가 같은 쪽에서 일어나지만 큐에서는 삽입과 삭제가 다른 쪽에서 일어난다는 것이다. 위의 그림과 같이.. 2024. 3. 24.
Hello React! 1.1 왜 리액트인가? 최근 몇 년간 전 세계 개발자는 자바스크립트에 뜨겁게 열광하고 있다. 한때 자바스크립트는 웹 브라우저에서 간단한 연산을 하거나 시각적인 효과를 주는 단순한 스크립트 언어에 불과했다. 현재는 웹 애플리케이션에서 가장 핵심적인 역할을 한다. 더 나아가 영역을 확장하여 서버 사이드는 물론 모바일, 데스크톱 애플리케이션에서도 엄청나게 활약한다. 예를 들어 슬랙(Slack), 아톰(Atom), VS Code 등 유명한 데스크톱 애플리케이션을 일렉트론(Electron)(자바스크립트로 데스크톱 애플리케이션을 만들 수 있는 프레임워크)으로 개발했다. 자바스크립트로 크로스 플랫폼 애플리케이션을 개발할 수 있는 여러 프레임워크(Ionic, Tianuum, NativeScript, React Nati.. 2024. 3. 23.
1. 스택(Stack)[자료구조 & 알고리즘] 1. 1 스택이란? 스택(stack)은 컴퓨터에서 믿을 수 없을 정도로 많이 사용되는 자료 구조이다. 예를 들어서 우리가 스마트폰에서 "뒤로 가기" 키를 누르면 현재 수행되는 앱이 종료되고 이전에 수행되던 앱이 다시 나타난다. 이때 스택이 사용된다. 스택을 영어사전에서 찾아보면 '(건초, 밀집 따위를 쌓아놓은) 더미, 낟가리'를 의미한다고 되어 있다. 식당에 쌓여있는 접시 더미, 책상에 쌓여있는 책, 창고에 쌓여있는 상자 등이 스택의 전형적인 예이다. 스택에는 두 가지의 기본 연산이 있다. 하나는 삽입 연산으로 push 연산이라고 하고 또 하나는 삭제 연산으로 pop 연산이라고 한다. [그림 2]는 스택에서의 일련의 push 연산과 pop 연산을 보여주고 있다. push(1)를 수행하면 비어 있는 스택에.. 2024. 3. 22.
윤성우 열혈C 도전 프로그래밍2 문제1. 길이가 10인 배열을 선언하고 총 10개의 정수를 입력 받아서, 홀수와 짝수를 구분 지어 출력하는 프로그램을 작성해 보자. 일단 홀수부터 출력하고 나서 짝수를 출력하도록 하자. 단, 10개의 정수는 main함수 내에서 입력받도록 하고, 배열 내에 존재하는 홀수만 출력하는 함수와 배열 내에 존재하는 짝수만 출력하는 함수를 각각 정의해서 이 두 함수를 호출하는 방식으로 프로그램을 작성하자. 예제입력1) 1 2 3 4 5 6 7 8 9 0 예제출력1) 홀수 : 1, 3, 5, 7, 9 짝수 : 2, 4, 6, 8, 0 해설 함수로 배열을 전달한 후에 함수내에서 만약에 홀수를 출력하는 함수이면 전달된 배열의 각 인덱스 요소를 2로 나누었을시 나머지가 0이 아니면 출력, 짝수일 경우 나머지가 0일 경우 .. 2023. 8. 2.
C언어 - 포인터의 포인터 1. 포인터 변수를 가리키는 이중 포인터 변수 (더블 포인터 변수) 포인터의 포인터는 포인터 변수를 가리키는 또 다른 포인터 변수를 뜻하는 의미로 흔히 "이중 포인터" 또는 "더블 포인터"라 부르며 아래와 같이 포인터 변수의 선언에 사용되는 * 연산자를 두 개 이어서 선언한다. int** dptr //int형 이중 포인터 아래의 코드를 한번 살펴보자 int num = 0; int* ptr = # 우리는 앞서 포인터를 공부하면서 위의 예제를 수도 없이 봤었다. num은 변수이기 때문에 주소값이 존재하고 이 주소값을 얻어서 int형 포인터 변수인 ptr에 저장을 하였다. 여기서 변수 num과 포인터 변수 ptr의 차이점과 공통점을 정리해보자면.. 공통점 : 둘 다 변수이다. 따라서 값의 저장이 가능하.. 2023. 7. 27.
C언어 - 다차원 배열 1. 2차원? 3차원? 배열 다차원 배열은 2차원 이상의 배열을 의미한다. 다차원 배열은 1차원 배열의 연장선상에 놓여있다고 생각하면 된다. 2차원 배열과, 3차원 배열은 논리적으로 각각 2차원과 3차원의 형태를 띤다. 즉, 2차원 배열은 평면구조의 배열이고, 3차원 배열은 직육면체 구조의 배열이다. C언어에서 문법적으로 4차원, 5차원 배열의 선언도 가능은 하지만 그것은 의미를 부여하기 힘든, 의미가 없는 배열이다. 따라서 다차원 배열은 2차원, 3차원 배열을 의미하는 것으로 이해하면 된다. 1차원, 2차원, 3차원 배열의 선언형태는 다음과 같다. int arrOne[10]; //길이가 10인 1차원 int형 배열 int arrTwo[5][5]; //가로, 세로의 길이가 각각 5인 2차원 int형 배열.. 2023. 7. 26.