C - 자료구조 순환
·
C
순환이란 ? 어떠한 알고리즘이나 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법이다. 일반적으로 반복문보다 느리다. 반복문을 쓰면 코드가 개판이 되지만 재귀로 적으면 깔끔해지는 코드를 쓰는데 활용 된다 #include int factorial(int n){ if(n==1){ return 1; } else if(n>=2){ return (n + factorial(n-1)); } } int main(void){ int b=0; scanf("%d", &b); printf("%d", factorial(b)); } 1+2+3+...+n을 계산하는 순환 함수이다. 함수명이 factorial인 이유는 n! 함수 먼저 풀면서 공부해서 그런거니 신경 쓰지 마 아무튼 factorial함수를 잘 보면 자기 자신..
C - Big-O 표기법
·
C
1. g(n)=1 - 상수 시간 복잡도 - f(n) = O(1) - 입력이 증가해도 항상 일정한 시간이 걸리는 경우 - 가장 이상적인 성능 void f(int n) { //n은 입력의 크기 printf("Hello"); } //어떠한 크기의 n이 들어올지라도 "Hello"한번 찍어주고 프로그램을 끝냄 //n이 몇이던지 자신의 일을 수행하는데 걸리는 시간은 1로 일정함 void f(int n) { printf("Hello"); printf("World"); } //어떠한 크기의 n이 들어올지라도 "Hello" 한번 "World" 한번 찍어주고 프로그램을 끝냄 //n이 몇이던지 자신의 일을 수행하는데 걸리는 시간은 2로 일정함 2. g(n)=n - 선형 시 간 복잡도 - f(n) = O(n) - 시간은 입력..
C - 자료구조 성능과 점근적 분석법
·
C
성능의 세가지 측면 최선의 경우 -> 빠르면 1 초 내에 번호를 찾아줌 평균의 경우 -> 평균 10초 이내에 번호를 찾아줌 최악의 경우 -> 아무리 늦어도 1분 이내에 번호를 찾아줌 성능을 이야기 할때는 최악의 경우를 상정하고 얘기해야한다. **최악의 경우의 성능 = 보장 !! 자원의 두가지 측면 : 공간과 시간 공간에 관련된 성능 - 공간 복잡도 : 특정한 프로그램을 수행하는데 요구되는 메모리 -> Memory 시간에 관련된 성능 - 시간 복잡도 : 특정한 프로그램을 수행하는데 요구되는 시간 -> CPU * 시간이 공간보다 더 소중한 자원이다 ! 공간 복잡도 및 시간 복잡도의 예 - n개의 정수를 입력 받아서 합을 구하는 프로그램 1. 정수를 하나씩 읽어서 합을 구함 int i, x, sum; for ..
C - 자료구조 기초2
·
C
기법이란 무엇인가? 기법 : 자료를 적절한 구조를 갖도록 조직하고 그에 따른 연산을 제공 연산 : 자료를 관리하기 위한 작업(추가, 제거, 검색, etc) 구조는 달라도 연산은 동일함 -> 구조에 따른 연산의 구현 방법은 다름 추상화 : 개별적인 사람이나 사물, 상황의 성질로부터 추출되어 가공된 일반적이고 공통적인 개념 매우 다양한 형태의 자료가 존재하며 각 자료들의 개별적인 속성을 제거하고 공통된 속성을 추출해 이를 이용하는 과정 ex ) 전화번호, 앱, 버스번호 등 리스트로 자료를 관리한다는 점 리스트에 대한 추가/제거/검색 연산은 모든 앱에 공통적으로 작용됨 이러한 형태에 대한 자료 구조를 추상 자료형(abstract data type)이라고 칭함, 어떠한 자료와 그 자료에 대한 연산을 명기한 개념..
C - 자료구조 기초
·
C
- 컴퓨터의 메모리는 데이터를 보관하는 장소 - 바이트(8비트)단위로 주소가 지정됨 - 모든 변수는 주소를 가짐 자료란 ? - 컴퓨터에 저장할 수 있는 모든 값 자료형 - 컴퓨터의 값을 저장할 수 있도록 프로그래밍 언어에서 미리 정의된 값들의 집합 - 시스템에서 제공하는 자료형과 사용자가 정의하는 자료형이 있다. 시스템에서 제공하는 자료형 1. 자료의 단위 - 비트 : 0 또는 1을 기록할 수 있는 최소 단위 - 바이트 : 1byte는 8비트로 구성 - 워드 : 한번에 전송하거나 처리하는 단위!! 4byte(32bit) 또는 8byte(64bit)가 많이 사용 2.자료의 구성 - 세상의 모든 자료는 문자와 숫자로 구성 - 문자 -> char, char *(string type) - 숫자 -> 정수(int..