연결 리스트(Linked List) 리스트(List) 1) 동적 배열로 작성된 순차 리스트 2) 자료의 삽입, 삭제 연산 - 원소의 이동 작업이 필요하다. 3) 원소의 개수가 많고 삽입, 삭제 연산이 빈번한 작업 - 소요되는 시간이 크게 증가 리스트 복사 # 1. new_list = old_list 주소의 복사, 얕은 복사 # 2. new_list = old_list[:] 슬라이싱(slicing), 깊은 복사 # 3. new_list = [] new_list.extend(old_list) ✔ extend(): 리스트를 추가하는 함수 깊은 복사 # 4. new_list = list(old_list) ✔ list() 깊은 복사 # 5. import copy new_lsit = copy.copy(old_lis..
Queue Queue 의 종류 1) 선형 큐: 간단하고 기본적인 형태이며, 리스트로 구현한다. 2) 원형 큐: 선형에서 발전된 형태이며, 리스트로 구현한다. 3) 연결 큐: 연결리스트 형식으로 구현한다. 4) 우선순위 큐 선형 큐 선형 큐의 특징 1) 1차원 리스트를 이용한 큐 - 큐의 크기 = 리스트의 크기 - front: 저장된 첫 번째 원소의 인덱스 - rear: 저장된 마지막 원소의 인덱스 2) 상태표현 - 초기상태 : front = rear = - 1 - 공백상태: front = rear - 포화상태: rear = n-1 (n: 리스트의 크기, n-1: 리스트의 마지막 인덱스) 원형 큐 1차원 리스트를 사용하되, 논리적으로 리스트의 처음과 끝이 연결되어 원형 형태의 큐를 이룬다고 가정하고 사용한..
Stack2 - 문제풀이 위주 문1: Forth T = int(input()) for test_case in range(1, T + 1): cases = input().split() stack = [] try: for i in range(len(cases)-1): if cases[i].isdigit(): stack.append(int(cases[i])) continue else: a = stack.pop() b = stack.pop() if cases[i] == '+': stack.append(b+a) continue elif cases[i] == '-': stack.append(b-a) elif cases[i] == '*': stack.append(b*a) else: if not b or not a: ..
Stack1 Stack 자료구조 ✔ 스택 구현 시 고려 사항: 리스트를 사용하여 스택을 구현하는 경우 - 장점: 구현이 용이 - 단점: 리스트의 크기를 변경하는 작업은 내부적으로 큰 오버헤드가 발생하는 작업으로 많은 시간을 소요 ✔ 해결 방법 1) 리스트의 크기가 변동되지 않도록 배열처럼 크기를 미리 정해 놓고 사용하는 방법 2) 동적 연결리스트를 이용하여 저장소를 동적으로 할당하여 스택을 구현하는 방법 - 장점: 구현이 용이 - 단점: 리스트로 구현하는 것보다 구현이 복잡함 괄호 검사 1) 괄호의 종류: 대괄호('[', ']'), 중괄호('{', '}'), 소괄호('(', ')') 2) 조건: (1) 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다. (2) 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보..
List 2 - 정렬(Sort) 정렬(Sort) [셀렉션 알고리즘] 1) 저장되어 있는 자료로 부터 K 번째로 큰 혹은 작은 원소를 찾는 방법이다. (최소 값, 최대 값 혹은 중간 값을 찾는 알고리즘) 2) 셀렉션 선택과정 - 정렬 알고리즘을 이용하여 자료를 정렬 - 원하는 순서에 있는 원소를 가져오기 EX) k 번째로 작은 원소 찾는 알고리즘 1 번부터 k 번까지 작은 원소들을 찾아 List 앞쪽으로 이동시키고, List의 k번째를 반환한다. k가 비교적 작을 때 유용하며 O(kn)의 수행시간을 필요로 한다. def select(list, k): for i in range(0,k): min_index = i for j in range(i+1, len(list)): if list[min_index] > ..
List 2 - 2차원 리스트 2차원 리스트 1) 1차원 리스트를 묶어 놓은 리스트이다. 2) 2차원 이상의 다차원 리스트는 차원에 따라 인덱스를 선언한다. 3) 2차원 리스트의 선언: 세로길이(행의 개수), 가로길이(열의 개수) 를 필요로 한다. 4) 파이썬에서는 데이터 초기화를 통하여 변수 선언과 초기화가 가능하다. 리스트 초기화 # 1차원 리스트 초기화 #1) arr = [0,0,0,0,0] #2) arr = [0] * 5 # res = [0,0,0,0,0] #3) arr = [i for i in range(2,9) if i%2 == 0 ] # res = [2,4,6,8] # 2차원 리스트 초기화 #1) brr = [[1,2,3], [1,2,3], [1,2,3]] #2) brr =[[1,2,3]] ..
TDD(Test Driven Development) TDD(Test Driven Development) 란 테스트 주도 개발(TDD, Test Driven Development)은 소프트웨어를 개발하는 여러 방법론 중 하나이다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성 하고 난 후 테스트를 거치게 된다. TDD 방법론에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 작동하는지 검증하기 위한 테스트 코드를 우선 작성한다. 이를 통하여 테스트가 실패할 경우 테스트를 통과하기 위한 최소한의 코드로 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링하는 과정을 거치게 된다. * 정리 TDD 란 Test-Driven Development 로 개발(코드 ..
데브옵스(DevOps) 데브옵스(DevOps) 는 방법론이다. 즉 개발 조직에 따라서 다르게 적용될 수 있다. 데브옵스(DevOps) 란 데브옵스(DevOps)란 소프트웨어의 개발(Development)와 운영(Operations)의 합성어로 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론이다. 데브옵스는 정확한 정의가 존재하지 않는 추상적 개념에 해당하지만 소프트웨어 개발 조직과 운영조직 간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다. 데브옵스(DevOps) 수명 주기 DevOps 수명 주기는 개발(루프의 왼쪽) 및 운영(루프의 오른쪽)에 필요한 프로세스, 기능 및 도구를 나타내는 6단계로 구성 된다. 각 단계에서 팀은 공동작업..
- Total
- Today
- Yesterday
- SW
- 알고리즘
- 이차 리스트
- 자료구조
- 프로그래머스
- 보험
- 네트워크
- 프로세스 주소공간
- CS
- 자료구조와알고리즘 23강
- 자바
- 정렬
- 리스트2
- 코드업 기초
- CS.
- 완전탐색
- https
- 리스트 복사
- 리스트
- CS 스터디
- 데이터베이스
- 리스트함축
- 스터디
- 연결리스트활용
- 프로그래머스강의
- 이진탐색
- Greedy sort
- 운영체제
- It
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |