기존 자료형을 단순한 형태의 새 자료형으로 바꾸기배열, 포인터와 같은 형식의 재정의 : 복잡해 보이는 문법을 쉽게 표현할 수 있다유지, 보수에서의 이점
데이터를 그룹화 하는 구조체 1. 배열로 나타내기 2. 구조체(Structure)로 나타내기 구조체로 새로운 자료형을 만드는 방법 구조체로 만든 자료형으로 변수 선언하기 구조체로 선언한 변수의 요소 사용하기 구조체로 선언한 변수를 포인터로 사용하는법
구조체를 사용하는것이 왜 좋은지 이해하려는 목적으로 학습을 시작하였다.C를 너무 책으로만 배운 것 같아서, 코딩을 연습할겸 친구 정보 관리 프로그램 예제에, 정보를 수정하는 함수까지 스스로 추가하며 프로그램을 만들어보았다 !서식 지정자들을 사용하는 여러 방법들포인터와
내가 공부할때 참고하는 책은 메모리 관리를 중요하게 생각해 여러 자료형을 최소한으로 사용하다보니 서식 지정자가 헷갈리는 경우가 많았다 알아보니, 서식 지정자를 구체적으로 설정해야 잠재적인 오류를 줄일 수 있다고 한다 기본적인 서식 지정자 자주 사용 %c char 문
구조체로 만들어지는 자료형의 크기 과거에는 컴퓨터 시스템의 메모리 용량이 적어 메모리를 최대한 적게 사용하였다. 하지만 최근에는 메모리 용량이 늘어나면서 메모리를 조금 더 사용하더라도 프로그램의 실행 속도가 향상되도록 프로그램을 개발하고 있다. 구조체의 경우에도
연결 리스트(Linked List)란 ? 어떤 데이터 덩어리(노드 : Node)를 저장할 때 그 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장하는 방법이다. 단순 연결 리스트와 이중 연결 리스트, 순환 연결 리스트와 같은 종류가 있다.
이 내용은 cs50을 공부하며 배웠던 개념인데, 구조체를 응용하는 성적 처리 프로그램에서 등록된 학생의 등수를 구해야한다는 조건에 머리가 하얘져 다시 복습하며 작성하게 되었다. 빅 오 표기법 빅 오 표기법은 알고리즘이나 함수의 시간 복잡도(시간 복잡도의 상한)를 나
이번 글에는 Do it C언어 입문(김성엽) 퀴즈 중 18-4번을 푸는 과정에 있었던 고민들을 담으려고 한다. 퀴즈 내용 연결 리스트를 사용하여 성적 처리 프로그램을 만들기 연결 리스트의 개념을 사용해 학생 수에 제한이 없도록 한다. 1번을 선택할 시 이름과 국
저스트 두잇
연결리스트의 삽입, 삭제, 정렬, 교체, 검색
컴퓨터는 꺼져도 데이터를 유지할 수 있는 보조기억 장치(SSD, HDD 등)이 필요하다.다양한 보조기억 장치의 특성을 각각 파악해서 프로그래밍하는 것은 불가능에 가깝기에 운영체제는 보조기억 장치에 상관없이 같은 함수로 데이터를 저장할 수 있도록 하는 파일 입출력 라이브
함수 포인터프로세스 메모리 영역에 저장되는 명령C언어 소스코드가 컴파일러를 거치면 실행 파일이 되고 실행 파일은 CPU가 처리할 수 잇는 '기계어 명령문' 단위로 이뤄진다.프로그램이 실행되면 프로세스 형태로 메모리에 저장되는데 이때 명령문들은 코드 세그먼트(CS, Co
공부하는 책인 Do it! C언어 입문(김성엽)에서 콜백 함수를 쉽게 잘 풀어서 설명해주는 것 같아 일부를 인용하여 게시글을 작성한다. C언어 공부를 통해 기초를 다지거나 더 자세히 보고싶다면 책을 사서 보길 추천한다.완제품 형식의 프로그램을 만드는 프로그래머도 있는
오늘부터 자료구조와 알고리즘을 공부하면서 정리한 내용들을 기록할 것이다. 학습을 위해 내 블로그를 본다면 앞으로의 글은 동적할당, 포인터, 배열에 대한 개념을 이해하고 읽기를 추천한다.이 포스트에서는 학습하며 정리한 내용과 더불어 난수를 활용해보고 배열을 사용해 기수를
소수(prime number)를 나열하는 알고리즘 개선시키기소수는 자신과 1 이외의 정수로 나누어떨어지지 않는 정수이다.즉 n까지의 소수를 구하려면 반복문을 통해 3부터 n까지 수가 2부터 n-1까지의 정수로 나누어떨어지는지 체크해보면 된다.int getPrime(in
검색 알고리즘, 즉 특정 항목에 해당하는 키(key)를 찾는 알고리즘에 대해 다뤄볼 것이다.검색 알고리즘의 세 가지 예로, 배열 검색, 선형 리스트 검색, 이진검색트리 검색이 있는데 뒤의 두 가지 알고리즘은 자료구조에 의존하는 방법이다. 알고리즘이 계산 시간이 짧다고
데이터를 일시적으로 저장하기 위해 사용하는 자료구조이다.가장 나중에 넣은 데이터를 가장 먼저 꺼낸다.스택에 데이터를 넣는 작업을 푸시(Push), 꺼내는 작업을 팝(Pop)이라고 한다.푸시, 팝을 하는 위치를 꼭대기(Top)라 하고 가장 밑바닥 부분을 바닥(Bottom
큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓은 자료구조이다.가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO)인 점이 스택과 다르다.출처 : <a href="https://ko.wikipedia.org/wiki/%ED%81%90\_(%E
덱(Deque)은 큐의 앞, 뒤 모두에서 삽입 및 삭제가 가능한 큐를 의미한다.덱은 위 사진 형태의 원형 큐를 조금 확장하면 손쉽게 구현할 수 있다.앞에서 구현한 원형 큐 코드에서 사용하지 않는 함수를 제거하고 인큐와 디큐 함수를 front와 rear로 나누어 구현하였
어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다.자연수를 재귀적으로 정의하면 아래와 같다.이 조건 두 가지만으로도 1부터 2, 3, 4...와 같이 무한하게 이어지는 자연수를 정의할 수 있다.재귀를 효과적으로
재귀 알고리즘의 분석 먼저 아래의 프로그램을 통해 재귀 알고리즘을 분석하는 두 가지 방법을 알아볼 것이다. 다음 포스트에서는 goto 문과 스택을 활용하여 재귀 알고리즘을 비재귀적으로 구현하고, 메모이제이션을 활용해 효율을 높여볼 것이다. 상향식 분석 상향식 분
저번 포스트에서 다뤘던 이 재귀 알고리즘을 비재귀적으로 구현하려고 한다.먼저 goto 문을 활용해 가장 아래에 있는 꼬리 재귀부터 제거해보겠다.recur(n-2)를 풀어 설명하면 인자를 n-2로 전달하여 recur 함수를 호출한다는 뜻이다. 즉 n값을 n-2로 업데이트
최근 군대에서 영어와 경제 공부를 개발 공부와 병행하느라 자료구조 공부 비중이 이전보다 줄었다.이전보다 포스팅의 주기는 길어질지라도 꾸준히 학습한 내용을 작성할 예정이다.하노이의 탑은 A 기둥에 있는 원반을 최소의 횟수로 C 기둥으로 옮기는 문제이다.이때 원반을 1개씩
C를 학습하다 보니 이전에는 void main()을 사용하라고 배웠으나, 자료구조 책을 보니 int main(void) 형으로 메인 함수를 사용하는 경우가 대부분이었다.그럼 int main() 속의 void는 무슨 의미인지, 이런 표현이 실행상에는 문제가 없지만 어떤
서로 공격하여 잡을 수 없도록 8개의 퀸을 8 x 8 체스판에 놓으세요.64칸이 있는 체스판에서 8개의 퀸을 아무런 규칙 없이 배열하는 경우의 수를 계산하자면 아래와 같다.64 \* 63 \* 62 \* 61 \* 60 \* 59 \* 58 \* 57 = 178,462
가장 쉽고 가장 비효율적인 버블정렬
골드는 찍어야지
골드는 찍어야지 2
단순 선택 정렬과 단순 삽입 정렬 단순 선택 정렬 단순 선택 정렬(straight selection sort)은 가장 작은 요소를 선택해 알맞은 위치로 옮기는 과정을 반복하여 정렬하는 알고리즘이다. #include int main() { int a[5],
정렬은 재밌어
골드까지