반응형

분류 전체보기 543

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb054dl%2FbtriZsjIbg9%2FEN0jl4B9tFXQlAecVgGze0%2Fimg.png')"

[Python] 시간복잡도-알고리즘 복잡도 표현 방법

알고리즘 복잡도 표현 방법 1) 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양할 수 있는데, 다양한 알고리즘 중 어느 알고리즘이 더 좋은지를 분석하기 위해 복잡도를 정의하고 계산함 2) 알고리즘 복잡도 계산 항목 시간 복잡도 : 알고리즘 실행 속도 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 ※가장 중요한 시간 복잡도를 꼭 이해하고 계산할 수 있어야 함※ 알고리즘 시간 복잡도의 주요 요소는 반복문입니다. 입력의 크기가 커지면 커질수록 반복문이 알고리즘 수행 시간을 지배합니다. 3) 알고리즘 성능 표기법 -Big O(빅-오) 표기법 : O(N) 알고리즘 최악의 실행 시간을 표기 가장 많이/일반적으로 사용함 아무리 최악의 상황이라도 이 정도의 성능은 보장한다는 의미 -Ω(오메가..

CS/자료구조 2021.10.26

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJq0HT%2FbtriGkIijt9%2FMNynYyS6eykl0oOqdzo5a1%2Fimg.png')"

[Python] 링크드 리스트(Linked List)

대표적인 데이터 구조 : 링크드 리스트(Linked List) 1) 링크드 리스트(Linked List) 구조 -연결 리스트라고도 함 -배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조인데, 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조이다 -본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 -링크드 리스트 기본 구조와 용어 노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성 포인터(pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 -일반적인 링크드 리스트 형태 2) 간단한 링크드 리스트 예 1. Node 구현 보통 파이썬에서 링크드 리스트 구현시 ..

CS/자료구조 2021.10.26

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo4iPj%2FbtriKx0Y1lU%2FVko0Knz5NeASq4SqlKL4YK%2Fimg.png')"

[Python] 스택(Stack)

꼭 알아둬야 할 자료구조 : 스택(Stack) -데이터를 제한적으로 접근할 수 있는 구조 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 -가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 큐 : FIFO 정책 스택 : LIFO 정책 1) 스택 구조 -스택은 LIFO(Last-In, First-Out) 또는 FILO(First-In, Last-Out) 데이터 관리 방식을 따름 LIFO : 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 FILO : 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책 -대표적인 스택의 활용 컴퓨터 내부 프로세스 구조의 함수 동작 방식 -주요 기능 push() : 데이터를 스택에 넣기 pop() : 데이터를 스택에서 꺼내기 ※참고※ htt..

CS/자료구조 2021.10.25

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBCVtO%2FbtriQ5P21mi%2FkUMPN3kOVixkpfh9jznsV1%2Fimg.png')"

[Python] 큐(Queue)

대표적인 데이터 구조 : 큐(Queue) 1) 큐 구조 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조로, 줄을 서는 행위와 유사함 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일 FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대 2) 알아둘 용어 Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 ※참고※ https://visualgo.net/en/list VisuAlgo - Linked List (Single, Doubly), Stack, Queue, Deque VisuAlgo is free of charge for Computer Science c..

CS/자료구조 2021.10.25

[Python] 배열

꼭 알아둬야 할 자료구조 : 배열(Array) -데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조 -파이썬에서는 리스트 타입이 배열 기능을 제공하고 있음 1) 배열이 왜 필요할까? -같은 종류의 데이터를 효율적으로 관리하기 위해 사용 -같은 종류의 데이터를 순차적으로 저장 -배열의 장/단점 장점 빠른 접근 가능 단점 추가/삭제가 쉽지 않음 미리 최대 길이를 지정해야 함 2) 파이썬과 C언어의 배열 예제 c언어 #include int main(int argc, char * argv[]) { char country[3] = "US"; printf ("%c%c\n", country[0], country[1]); printf ("%s\n", country); return 0; } 파이썬 c..

CS/자료구조 2021.10.25

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFI4sZ%2FbtriO1mhF1I%2FjfEFyKK2rh4rjM8tO48hQK%2Fimg.png')"

[Jupyter] 주피터 노트북 사용하기

주피터 노트북 설치 및 실행 설치(Mac 환경) 1) anaconda 설치 -anaconda란? 파이썬 기본(컴파일러)에 유용한 기능을 추가해놓은 툴입니다. 유용한 기능 파이썬 주요 라이브러리 : 많이 쓰이는 라이브러리들을 anaconda가 가지고 있으므로 라이브러리의 별도의 설치가 필요없음 jupyter notebook 등 유용한 툴 -참고 컴파일러 : 프로그래밍 언어로 작성된 코드를 컴퓨터가 실행할 수 있는 코드로 변환하는 프로그램 파이썬의 장점 : 라이브러리 pip install library-name 2) anaconda 설치가 안 된다면? -파이썬 컴파일러 설치 : https://www.python.org/downloads/ Download Python The official home of th..

기타 2021.10.25

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK68Mv%2FbtrikMYeQXu%2F9PkfIPjnN7qgzTgkBTIQG1%2Fimg.png')"

[정렬 알고리즘] 정렬(Sorting)

정렬(Sorting) 정렬(Sorting)이란 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말합니다. 정렬 알고리즘의 종류 1) 선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복합니다. 선택 정렬 소스코드 (Python) array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i# 가장 작은 원소의 인덱스 for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i]# 스와프 ..

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCGwQf%2FbtrigqATwCd%2FAsC9iQaLdzqOBtkAjj9LB1%2Fimg.png')"

[그래프 탐색 알고리즘] DFS/BFS

그래프 탐색 알고리즘 '탐색'이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말합니다. 대표적인 그래프 탐색 알고리즘으로는 DFS와 BFS가 있으며, 이는 코딩 테스트에서 매우 자주 등장하는 유형입니다. DFS와 BFS 관련 필수 자료구조 1) 스택 자료구조 -먼저 들어온 데이터가 나중에 나가는 형식(선입후출)의 자료구조 -입구와 출구가 동일한 형태로, 스택을 시각화할 수 있음 스택 동작 예시 스택 구현 예제(Python) stack = [] # 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stac..

[백준] 1052번 물병

문제 지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번에 K개의 물병을 옮길 수 있다. 하지만, 지민이는 물을 낭비하기는 싫고, 이동을 한 번보다 많이 하기는 싫다. 따라서, 지민이는 물병의 물을 적절히 재분배해서, K개를 넘지 않는 비어있지 않은 물병을 만들려고 한다. 물은 다음과 같이 재분배 한다. 먼저 같은 양의 물이 들어있는 물병 두 개를 고른다. 그 다음에 한 개의 물병에 다른 한 쪽에 있는 물을 모두 붓는다. 이 방법을 필요한 만큼 계속 한다. 이런 제약 때문에, N개로 K개를 넘지않는 비어있지 않은 물병을 만드는 것이 불가능할 수도 있다. 다행히도,..

[Python] 코딩테스트에 꼭 필요한 파이썬 문법

# nxm 크기의 2차원 배열 n, m = map(int, input().split()) arr = [[0]*m for _ in range(n)] # 리스트에서 특정 값을 가지는 원소를 모두 제거하기 a = [1, 2, 3, 4, 5, 5, 5] remove_set = {3,5} result = [i for i in a if i not in remove_set] # 문자열 연산 a = "String" print(a*3) # 문자열 여러번 출력 # StringStringString a = "ABCDEF" print(a[2:4]) # 문자열 슬라이싱 # CD # 사전 자료형 a = dict() a['홍길동'] = 97 a['이순신'] = 98 b = { '홍길동':97, '이순신':98 } key_list ..

반응형