전체 글

Stack LIFO(Last In First Out) : 스택에 마지막으로 입력된 자료를 제일 먼저 삭제하는 방식 Queue FIFO(First In First Out) : 선입선출 방법으로 먼저 입력된 자료를 가장 먼저 삭제하는 방식 Deque Stack + Queue → 제한된 접근(삽입, 삭제)만 허용 Linked List (연결 리스트) 배열은 연속된 메모리공간에 차례대로 저장되어있다. 반면, 연결 리스트는 연속되지 않은 메모리 공간에 독립적으로 저장되어있다. 자기의 값 뿐만 아니라 다음 값이 어디 저장되어있는지 주소를 알고 있다. 마지막엔 C언어 에서는 Null을, Python에서는 None을 가리킨다. 사진출처 출처 한국외대 신찬수 교수님의 "Data Structure with Python" ..
자료구조 자료 : Data → 저장공간(memory) + 읽기, 쓰기, 삽입, 삭제, 탐색 (연산) ← 구조 자료구조 예 : 변수(variable) a = 5 # a라는 저장공간에 값 5를 쓰는 쓰기연산 print(a) # 화면에 출력하는 읽기연산 변수 이름으로 접근 배열/리스트 A = [3, -1, 5, 7] A[2] # 5 각 원소의 index로 접근 리스트의 이름과 인덱스만으로 읽고 쓸 수 있다. 알고리즘 자료구조에 담긴 데이터를 가공해서 다양한 연산을 통해 원하는 정답을 출력하는 것 알고리즘 예 : 100개의 정수 : 리스트 A → 입력 ↓ 오름차순 정렬 → 출력 인류최초의 알고리즘 : 최대공약수(GCD) 계산 알고리즘 (by Euclid) gcd(8, 12) : 8과 12를 공통으로 나눌 수 있..
· 알고리즘
문제https://www.acmicpc.net/problem/1744 1744번: 수 묶기길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에www.acmicpc.net더보기더보기입력첫째 줄에 수열의 크기 N이 주어진다. N은 50보다 작은 자연수이다. 둘째 줄부터 N개의 줄에 수열의 각 수가 주어진다. 수열의 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.출력수를 합이 최대가 나오게 묶었을 때 합을 출력한다. 정답은 항상 2**31보다 작다.예제 입력14-1213예제 출력16예제 입력26012435예제 출력227예제 입력31-1예제 출..
· 알고리즘
문제https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어www.acmicpc.net더보기더보기입력첫째 줄에 레벨의 수 N이 주어진다. (1 ≤ N ≤ 100) 다음 N개 줄에는 각 레벨을 클리어하면 얻는 점수가 첫 번째 레벨부터 마지막 레벨까지 순서대로 주어진다. 점수는 20,000보다 작은 양의 정수이다.출력첫째 줄에 점수를 몇 번 감소시키면 되는지 출력한다.예제 입력13555예제 출력13예제 입력245375예제 출력26풀이1. n개의 정수를 입력받아 score에 추가2. f..
배열 가장 기본적인 순차적인(sequntial)자료구조 [매우 기본, 중요] 인덱스로 특정위치 값을 상수 시간 내에 읽을 수 있고 쓸 수 있는 두 개의 연산을 제공하는 자료구조 C언어 : 배열 (Array) int A[4] = {2, 4, 0, 5}; 크기가 4인 정수형 배열을 선언하고 값을 넣었다. 배열 A의 시작 주소를 100이라고 가정하면 A[0]의 주소값은 100이다. A[2]의 값을 알고 싶다면 주소만 알면된다. 100 (A[0]의 주소) + 2 * 4bytes (정수형 배열이기 때문에 한 칸에 4byte)로 계산 할 수 있다. 이것이 가능한 이유는 값들이 메모리에 순차적으로 저장되어있기 때문이다. 배열의 시간복잡도를 Big-O 표기법으로 확인해보자. A[2]의 값에 1을 더하는 코드가 있다고 ..
저나영
불로구