일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- NGINX
- laravel
- 복습 #회사
- php artisan
- ratchet
- 키워드 정리
- 카카오가고싶다
- AWS
- 키워드
- 보안
- 메모
- vagrant
- centOS
- 기타정리
- 네이버싫어
- jquery
- 작업물
- 개인공부
- php
- php-fpm
- 에러해결
- 코딩테스트
- 작업물 #영상편집 #서브컬쳐
- Backend
- error
- linux #centos
- 시벌이슈
- MySQL
- centOS7
- 일상
- Today
- Total
목록프로그래밍/자료구조, 알고리즘 (4)
개발을 간바루Joy 하게
컴퓨터 프로그래밍을 하다 보면 무언가를 되풀이하는 경우가 많다. 대표적으로 for문이나 while문 등의 반복문이 있다. for 문은 변수를 이용해서 반복 횟수를 제어하며, 그 만큼 반복하는 것이고 while 문의 경우 조건문에 의하여 반복하는 것이다. 하지만, 반복문을 사용하게 되면 복잡해지는 문제들이 존재한다. 이런 경우에 순환을 이용하여 코드를 짜면 좋다. 반복과 순환에 대해 알아보고 비교해보자. 반복은 반복문을 이용하여 되풀이하는 구조이다. 수행 속도가 빠르다는 장점이 있는 대신, 코드 작성이 순환문에 비해 어렵다. 다음은 팩토리얼 함수를 반복문으로 짠 구조이다. 다음 알고리즘을 빅오 표기법으로 표현해보면, O(n)의 시간 복잡도를 가지게 된다. for문을 통해 곱셈을 n번 수행하기 때문이다. (..
어느 한 문제에 대하여 많은 해답이 있을 수 있다. 수학 문제만 하더라도 여러 풀이 방법이 존재한다. 예시로 1부터 100까지 더한 값을 구하라는 문제를 푼다면. 어떤 사람은 1부터 100까지 하나씩 더하는 사람이 있고 (1+100) + (2+99) + (3+98) + ... = 101*50 = 5050 와 같은 방법으로 푸는 사람도 있을 것이다. 어느 풀이 방식이 효율적일까? 당연히 두 번째 풀이 방식이 더 빠르고 간단하게 풀 수 있으므로 효율적이다. 알고리즘도 이와 마찬가지로 어느 한 문제에 대하여 많은 방법이 존재한다. 앞 절에서 자료구조에 따라 적용가능한 알고리즘이 다르다고 하였다. 같은 문제라도 어떤 자료구조를 사용하고 어떤 알고리즘을 선택하느냐에 따라 프로그램의 성능은 달라지게 된다. 프로그램..
자료형(data type)이란, 데이터의 집합과 연산의 집합을 의미한다. 종류로는 크게 두 가지로 나뉜다. 1. 기본 데이터 타입: 프로그램 내에서 기본적으로 제공하는 자료형으로, 정수형, 실수형, 문자형, 문자열 등이 있다. 2. 추상 데이터 타입(ADT: Abstract Data Type): 데이터 타입을 추상적(수학적)으로 정의한 것으로, 데이터나 연산이 무엇(what)인지는 정의되지만 데이터나 연산을 어떻게(how) 컴퓨터 상에서 구현할 것인지는 정의되지 않는다. 우리가 알아볼 스택(stack), 큐(queue), 트리(tree) 등은 우리가 직접 만들어서 사용하는 추상 데이터 타입의 예시이다. 사용자 입장에서는 ADT가 어떻게 구현되었는지 알 필요도 없다. 또한 캡슐화를 통해 정보 은닉을 했으므..
일상생활에서 우리는 무언가를 정리하는 방법이 많이 존재한다. 그릇을 쌓아서 보관하거나, 사전에는 단어들이 정리되어있고, 마트 계산대에서는 줄을 서는 것과 같이 우린 어떤 사물들을 매번 정리하는 많은 방법들을 이용한다. 이와 마찬가지로 프로그램 내에서도 자료(data)를 정리하여 보관하는 많은 구조가 있다. 그 구조를 우린 "자료구조(data structure)"라고 한다. 자료를 저장했으면, 그 자료를 통해 주어진 문제를 해결해야 한다. 사전을 통해 우리는 모르는 단어를 찾듯이 프로그램에서도 자료를 통해 어떤 문제를 해결하는 절차가 존재한다. 그 절차를 알고리즘(algorithm)이라고 부른다. 즉, 프로그램은 자료구조와 알고리즘으로 이루어져있다. 그렇다면 프로그램 내부의 모든 명령어는 알고리즘이라고 할..