목록전공지식 (11)
LetITGo

안녕하세요 올라프입니다! 이때까지 자료구조의 리스트에서 단순 연결리스트까지 알아보았습니다. 오늘은 리스트의 나머지 종류인 원형 연결리스트와 이중 연결리스트에 대해서 알아보겠습니다. 원형, 이중 연결리스트를 알기 위해서는 앞의 내용인 단순 연결리스트에 대해서 알아야 합니다. 2020/09/01 - [전공지식/자료구조 와 알고리즘] - C언어 자료구조 List(2) - 단순 연결 리스트란? C언어 자료구조 List(2) - 단순 연결 리스트란? 안녕하세요 올라프입니다! 오늘은 지난 시간에 이어서 리스트의 종류가 무엇이 있는지에 대해서 알아보겠습니다. 리스트는 실생활에서 목록을 만드는 일에는 모두 쓰이는 자료구조인데요. 흔 letitgo01.tistory.com 원형 연결 리스트(Circular Linked ..

안녕하세요 올라프입니다! 오늘은 지난 시간에 이어서 리스트의 종류가 무엇이 있는지에 대해서 알아보겠습니다. 리스트는 실생활에서 목록을 만드는 일에는 모두 쓰이는 자료구조인데요. 흔히 우리는 To Do List처럼 할 일을 적는 데 많이 이용하고 있죠. 2020/08/31 - [분류 전체보기] - C언어 자료구조 List(1) - 리스트(List)란 무엇인가? C언어 자료구조 List(1) - 리스트(List)란 무엇인가? 오늘은 자료구조 중에서 선형구조 중 하나인 리스트에 대해서 알아보겠습니다. 실제로 저희는 생활하면서 목록을 자주 만듭니다. 오늘 해야 할 일, 마트에서 장 봐야 할 목록, letitgo01.tistory.com 연결로 구현하는 리스트에는 3가지 종류가 있습니다. 단순연결 리스트, 원형 ..

오늘은 자료구조 중에서 선형구조 중 하나인 리스트에 대해서 알아보겠습니다. 실제로 저희는 생활하면서 목록을 자주 만듭니다. 오늘 해야 할 일, 마트에서 장 봐야 할 목록, 반에서 학생 리스트, 성적 리스트 등 목록을 만들 일은 정말 많습니다. 이런 자료 형태를 리스트라고 하는데 자료들을 어떻게 리스트 형태로 만드는지에 대해서 배워보겠습니다. 리스트를 c언어로 구현하는 방법에는 두 가지가 있습니다. 첫 번째는 배열을 이용하는 방식이고 두 번째는 연결리스트를 이용하는 방식입니다. 배열을 이용하여 리스트를 구형하면 일단 간단합니다. 몇 번째 칸에 무슨 정보를 넣는지만 지정해주면 되고 출력도 매우 간단합니다. 하지만 칸과 칸 사이에 만약 삽입하거나 어떠한 정보를 삭제할 수도 있는데 이 과정을 구현하기가 어렵습니..

안녕하세요 이번에는 지난번에 알아본 구조체와 포인터를 어떻게 자료구조에서 적용하는지에 대해서 알아보겠습니다. 또한, 동적 메모리 할당이 무엇인지에 대해서 알아보겠습니다. 먼저 구조체와 포인터를 잘 모르는 사람들은 복습하거나 새로 배우고 오는 것을 추천합니다. 2020/08/28 - [전공지식/자료구조 와 알고리즘] - C언어 포인터 Pointer에 대해 알아봅시다 C언어 포인터 Pointer에 대해 알아봅시다 안녕하세요 오늘은 C언어에서 포인터에 대해서 알아보겠습니다. 포인터는 저도 솔직히 많이 어려워했던 부분이라서 열심히 공부했습니다. 처음에는 쉽게 배우면 앞으로 프로그래� letitgo01.tistory.com 2020/08/29 - [전공지식/자료구조 와 알고리즘] - c언어 - 구조체 Struct..

오늘은 구조체(Structure)에 대해서 알아보겠습니다. 구조체는 여러 변수를 하나로 묶어서 하나의 정보로 통합하는 형태를 의미합니다. 예시처럼 한 학생의 정보에 이름, 학번, 성적이 포함되어 있다고 할 때 3가지를 한꺼번에 묶은 것이 구조체가 될 수 있습니다. 구조체는 내부에 같은 형태, 예를 들면 정수, 실수, 문자열 등 같은 형태의 정보도 담을 수 있지만, 예시처럼 다른 형태의 정보들도 담을 수 있습니다. 구조체는 예시처럼 선언합니다. struct 라고 적고 student는 구조체의 태그(tag)라고 불리며 name, number, grade는 구조체의 멤버(member)입니다. 구조체를 선언한다고 하여서 변수를 선언하는 것이 아닙니다. 구조체는 그냥 정보의 틀만 구성한 것이며 변수는 따로 지정해..

안녕하세요 오늘은 C언어에서 포인터에 대해서 알아보겠습니다. 포인터는 저도 솔직히 많이 어려워했던 부분이라서 열심히 공부했습니다. 처음에는 쉽게 배우면 앞으로 프로그래밍하면서 쉽고 잘 이용할 것 같습니다. 포인터 (Pointer)는 주소를 저장하고 있는 변수입니다. 그럼 변수의 주소에 대해서 알아야 합니다. 변수의 주소를 계산해주는 연산자는 &입니다. 그래서 변수 i의 주소는 &i입니다. 이제 포인터를 선언하는 법에 대해서 알아보겠습니다. 포인터는 선언할 때 int *p; 처럼 선언합니다. 해석은 *p가 가리키는 내용은 "정수이다."입니다. int와 같은 자료형은 바뀔 수 있습니다. 포인터가 헷갈릴 수 있으므로 정리를 해보았습니다. a는 정수형 변수입니다. p는 포인터 변수입니다. 포인터 p에 정수 a의..

오늘은 C언어에서 순환(Recursion)에 대해서 알아보겠습니다. 팩토리얼을 구하거나 피보나치수열, 하노이 탑 알고리즘에서 순환을 이용하면 좋습니다. 순환이란 알고리즘과 함수가 수행하면서 자신을 다시 호출하여 접근하는 기법을 말합니다. 순환적으로 같은 과정을 반복할 때 주로 사용됩니다. 순환이란? 팩토리얼 알고리즘을 한번 만들어 보겠습니다. n이라는 숫자가 있을 때 n이 1이 될 때까지 1씩 줄여가면서 자기 자신을 호출하여 계산하고 n이 1이 되면 1을 반환하면서 끝납니다. 순환 알고리즘에서는 순환을 조건이 만족할 때 멈추게 해주는 것이 매우 중요합니다. 만약 멈추는 조건이 없다면 무한정 호출하여 시스템에 오류가 발생합니다. 따라서 빨간색 부분처럼 n이 1이면 1을 반환하고 함수를 멈추라는 조건이 필요..

안녕하세요 오늘도 자료구조와 알고리즘을 공부하면서 알아야 되는 내용을 알려드리게 되었습니다. 제어문 중 조건문에 대해서 알아볼 것입니다. 조건문에는 크게 두 가지가 있습니다. if문과 switch 문이 있습니다. if문은 if, else문과 중첩 if문 등이 있습니다. if 문 먼저 if 문입니다. 구성은 조건식과 문장으로 구성됩니다. 작동원리는 간단합니다. if문이 실행되면서 조건식의 참, 거짓을 확인합니다. 만약 조건식이 참인 경우에는 if 문안에 있는 문장이 실행되고 거짓이라면 실행되지 않고 다음 부분으로 넘어갑니다. if 문안에는 문장 하나만이 아닌 여러 문장, 반복문도 가능합니다. if-else 문 이번에는 if-else 문에 대해 배워보겠습니다. 여러 조건이 있을 경우에 주로 사용됩니다. 원리..

프로그램에는 3가지의 흐름이 있습니다. 순차적으로 짜인 순서대로 흐르는 것과 여러 개의 경로에서 선택하는 흐름, 조건을 만족할 때까지 반복하는 반복하는 흐름이 있습니다. 그중에서 오늘은 반복하는 구조인 반복문에 대해서 알아보겠습니다. 반복문이 필요한 이유 프로그램에서 반복 구조가 필요한 이유가 뭘까요? 만약 한 반에 50명이 넘는 학생들의 성적을 처리할 때 50명의 학생들의 성적을 입력하고 평균을 계산하고 출력하는 과정을 50번이나 반복하는 것은 비효율 적입니다. 그래서 성적 입력, 평균 계산, 성적 출력 이 과정들을 단순 반복하는 것을 쉽게 하기 위해서 반복문이 필요합니다. 또한 학생수가 60명이나 40명으로 변경될 경우 직접 줄 수를 줄여야 하는 불편함을 없애줍니다. 반복문의 종류 반복문에는 2가지 ..

오늘은 지난 시간에 이어서 다차원 배열에 대해서 알아보겠습니다. 동일한 스타일의 자료들이 있을때 구분해서 저장해야 한다면 다차원 배열을 이요하는 것이 좋습니다. 예를 들면 학생들이 있을때 점수는 모두 정수로 기록됩니다. 반별로 구분해서 저장할때는 2차원배열을 이요하면 됩니다. 1행에 1반의 정보, 2행에 2반의 정보, 이렇게 행을 구분하면 반마다의 학생들의 점수를 따로 저장할수 있습니다. 다차원 배열의 선언 다차원 배열의 입력 다차원 배열의 출력 다차원 배열 예시 배열의 역순출력 반복문을 이용하면 배열의 뒤에서 부터 출력하는 알고리즘도 구성할수 있습니다. 오늘까지 자료구조에서 가장 많이 쓰이는 배열에 대해서 알아보았습니다. 자료구조에서는 배열뿐만이 아닌 순환, 리스트, 스택, 큐 등 다양한 많은 알고리즘..