Array1 - 문제풀이 위주 문1: 최빈수 구하기 # 1204. 최빈수 구하기 from collections import Counter T = int(input()) for test_case in range(1, T + 1): n = int(input()) counter_list = Counter(list(map(int, input().split()))) max_v = max(counter_list.values()) for k, v in counter_list.items(): if v == max_v: print(f'#{test_case} {k}') break 풀이: 특정 자료에서 가장 여러 번 나타나는 값을 출력하는 코드이다. 주어진 특정 자료에서 각 원소의 발생 빈도를 확인하기 위하여 Collect..
Tree Tree [Tree의 특징] 1) 한 개 이상의 노드로 이루어진 유한 집합 - 루트(Root): 노드 중 최상위 노드 - 나머지 노드들: n(>=0) 개의 분리 집합 T1....Tn 으로 분리 될 수 있다. 2) 이들 T1...Tn 은 각각 하나의 트리가 되며(재귀적 정의) 루트의 서브 트리(Sub Tree) 라고 한다. [Tree의 구성 요소] 1) 노드 - 트리의 원소 2) 간선 - 노드를 연결하는 선 - 부모 노드와 자식 노드를 연결 3) 차수 - 노드에 연결된 자식 노드의 수 - 트리의 차수: 트리에 있는 노드의 차수들 중 가장 큰 값 - 단말 노드(리프노드): 차수가 0인 노드, 자식 노드가 없는 노드 이진 트리(Binary Tree) [Binary Tree의 특징] 1) 모든 노드들이..
Linked List - 활용 스택(Stack) [스택의 원소: 리스트의 노드] - 스택 내 순서는 연결리스트의 링크를 통해 연결됨 - push: 연결 리스트의 맨 앞에 노드 삽입 - pop: 연결 리스트의 맨 앞 노드 반환/삭제 [변수 top] - 연결 리스트의 맨 앞 노드를 가리킴 - 초기상태: top = None 우선순위 큐(Priority Queue) 1) 우선순위 큐의 구현 - 연결리스트 이용한 우선순위 큐 2) 우선순위 큐의 기본 연산 - 삽입: enQueue - 삭제: deQueue [연결리스트 이용한 우선순위 큐 구현] - 연결리스트를 이용하여 자료 저장 - 원소를 삽입하는 과정에서 리스트 내 노드의 원소들과 비교하여 적절한 위치에 노드를 삽입하는 구조 - 리스트의 가장 앞쪽에 최고 우선순..
Linked List - 정렬 삽입 정렬 자료 배열의 모든 원소들을 앞에서 부터 차례대로 이미 정렬된 부분과 비교하여, 자신의 위치를 찾아냄으로써 정렬을 완성한다. [ 삽입 정렬의 정렬과정 ] 1) 정렬할 자료를 두 개의 부분집합 S 와 U로 가정한다. - 부분집합 S: 정렬된 앞부분의 원소들 - 부분집합 U: 아직 정렬되지 않은 나머지 원소들 2) 정렬되지 않은 부분 집합 U의 원소를 하나씩 꺼내며 이미 정렬되어 있는 부분집합 S의 마지막 원소부터 비교하면서 위치를 찾아 삽입한다. 3) 삽입 정렬을 반복하면서 부분집합 S의 원소는 하나씩 늘리고 부분집합 U의 원소는 하나씩 감소하게 한다. 4) 부분집합 U가 공집합이 되면 삽입 정렬이 완성된다. ✔ 시간 복잡도: O(n^2) 병합 정렬 여러 개의 정렬된..
연결 리스트(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차원 리스트를 사용하되, 논리적으로 리스트의 처음과 끝이 연결되어 원형 형태의 큐를 이룬다고 가정하고 사용한..
List 1 - Brute force, Greedy, 순열, Sort(정렬) 강의 정리(필요하다고 생각되어지는 부분) 문제풀이 정리 Exhaustive Search 문제의 해법으로 생각할 수 있는 모든 경우의 수를 나열하고 확인하는 기법을 의미한다. → Brute-force 혹은 Generate-and-Test 기법이라고도 부른다. → 모든 경우의 수를 테스트 한 후 최종 해법을 도출 하므로 수행 속도는 느릴 수 있어도 해답을 찾아내지 못할 확률이 적다. → 주어진 문제를 풀 때, 우선 완전 탐색으로 해답을 도출한 후 성능 개선을 위하여 다른 알고리즘을 사용하여 해답을 확인하는 것이 이상적인 접근 방법이다. 예시 문) Baby Gin 6개의 숫자를 입력 받아 선택된 3개의 숫자가 연속된 숫자(run) 혹..
- Total
- Today
- Yesterday
- 리스트함축
- 파이썬
- 코드업 기초
- 자바
- CS 스터디
- 데이터베이스
- 이진탐색
- 자료구조
- CS
- 프로그래머스강의
- CS.
- 알고리즘
- Greedy sort
- 리스트 복사
- 프로그래머스
- 이차 리스트
- 운영체제
- 리스트2
- https
- 완전탐색
- It
- 네트워크
- 연결리스트활용
- 보험
- 스터디
- SW
- 리스트
- 프로세스 주소공간
- 정렬
- 자료구조와알고리즘 23강
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |