GRAPH
·
Algorithm/알고리즘 스터디
📌 그래프- 그래프는 인접하게 정점과 서로 이웃한 정점 간의 연결된 관계를 표현해 주는 비선형 자료구조- 쉽게, 여러 개체들이 연결되어 있는 자료구조💡 그래프 표현 방법G = (V, E)G = 그래프 (Graph)                       V = 정점 (Vertex)                        E = 간선 (Edge)💡 그래프 종류무방향 그래프 (V, E)- 간선에 방향성이 없는 그래프로 정점 간의 순서가 없다.- 즉, (A, B)와 (B, A)는 동일한 간선이다. 방향 그래프 - 간선에 방향이 있는 그래프로 정점에서 어디로 가는지의 방향과 순서를 표현할 수 있다. - 즉, 와 는 다른 간선이다. 여기서 잠깐!비선형 자료구조눈 순서가 정해져 있지 않은 자료 구조이다.근데..
그리디
·
Algorithm/알고리즘 스터디
그리디 : 탐욕- 미래를 고려하지 않고 오직 현재 시점에 가장 좋은 선택의 알고리즘 가장 좋은 선택 = 가장 빠르고, 저렴한, 가장 가치있는 선택  최적해가 보장되는 조건에서만 그리디 알고리즘을 사용할 수 있다.   조건 1. 현재의 선택이 미래의 선택에 영향을 주지 않는다. 서울 -> 대전 초이스에 따라 대전 -> 부산 초이스가 달라지는가? 했을때 달라지지 않는다.  => [조건 성립]그렇기 때문에 서울 -> 대전만 따졌을때 가장 좋은 선택을 하고, 대전 -> 부산만 따졌을 때 가장 좋은 선택을 한다는 것이다.  =>탐욕스러운 선택 조건 그리디 초이스 프로펄티 조건 2. 문제의 일부분의 최적 해가 모이면 전체의 최적 해가 된다는 것이다. 서울에서 부산까지의 최소 거리니까 서울 -> 대전의 최소 + 대전..
스택 Stack & 큐 Queue
·
Algorithm/알고리즘 스터디
ADT (Abstract Data Type)추상자료형개념적으로 어떤 동작이 있는지만 정의한다.구현에 대해서는 다루지 않는다. DS (Data Structure)자료구조ADT에서 정의된 동작을 실제로 구현한 것을 의미한다.스택 Stack스택은 가장 최근에 넣은 것을 가장 먼저 뺄 수 있는 데이터 구조로 내부 프로세스 구조 함수의 동작 방식으로 사용된다. LIFO (Last In First Out) 형태로 데이터를 저장하는 구조 1. 스택 주요 동작push : 아이템을 집어넣음/쌓음 (Python list의 append 메소드와 같다)pop : 아이템을 빼냄 (Python list의 pop 기능과 같다)peek : 최상단의 아이템을 알려줌2. 스택 동작 방식동작결과push(1)1push(2)21push(3)..
인터페이스 맵 MAP
·
Algorithm/알고리즘 스터디
MAP은 반복연산을 수행해주는 파이썬 내장함수이다. 반복연산에는 for문, while문이 있는데map은 그 중에서도 for문을 이용해서 자료를 다루는 것을 좀 더 간결하게 나타낼 수 있도록 한다. map은 실질적으로 사용을 해도 안해도 크게 문제가 될 것 없이 for문으로 다 대체가 가능하다.파이썬 내부에서 동작을 수행할 때도 for문을 쓰는거에 비해서 월등하게 더 빠르지도 않다.Mapkey-value pair들을 저장하는 ADT* ADP : ?중복된 key 값을 가지면 안됨. Map 언제 사용할까? 1. key값와 value값을 맵핑할 때2. 카운트할 때 https://www.youtube.com/watch?v=ZBu_slSH5SkMAP 사용 예시1. 짝수 만들기# 함수 생성def make_even(n..
배열 Array 와 리스트 List
·
Algorithm/알고리즘 스터디
파이썬에서는 리스트가 배열의 특성도 함께 내포하고 있어 크게 구분하여 사용하지는 않지만 두 자료구조의 특징과 동작 원리는 알아야 한다.배열 Array메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 배열 특징 [ 장점  단점 ]인덱스를 통해 참조(접근)할 수 있다.선언한 자료형의 값만 저장할 수 있다.새로운 값을 삽입하거나, 특정 인덱스에 있는 값을 삭제하기 어렵다.* 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요한다. => 삽입 삭제가 느리다배열의 크기는 선언할 때 지정할 수 있으며, 한번 선언하면 크기를 늘리거나 줄일 수 없다.리스트 List값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조* 노드는 컴퓨터 과학에서 값, 포인터를 쌍으로 갖는 기초 단위를..
디버깅
·
Algorithm/알고리즘 스터디
문법 오류인 경우, 컴파일러가 잡아준다.논리 오류(문법은 틀리지 않았는데 logic이 내가 원하는 대로 돌지 않은 오류)인 경우, 검증할 때 사용하는 것이 디버깅이다. 디버깅은 가장 뛰어난 오류 탐색 방법이다.* 디버깅은 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정이다.디버깅 방법코드에서 디버깅하고자 하는 줄에 중단점을 설정한다. 이때 중단점은 여러 개 설정할 수 있다.IDE의 디버깅 기능을 실행하면 코드를 1줄씩 실행하거나 다음 중단점까지 실행할 수 있으며, 이 과정에서 추적할 변숫값도 지정할 수 있다. 이 방법으로 변숫값이 자신이 의도한 대로 바뀌는지 파악한다.변숫값 이외에도 원하는 수식을 입력해 논리 오류를 파악할 수 있다. * 2, 3에서 말하는 변숫값 추적은 PyCharm의..