시간복잡도 : 입력된 N의 크기에 따라 실행되는 조작의 수를 나타낸다.공간복잡도 : 알고리즘이 실행될때 사용하는 메모리의 양을 나타낸다.퍼포먼스 측정 : 실행시간, 명령의 숫자세기 (컴퓨터 성능 / 프로그래밍 언어에 따라 다름)복잡도 분석 : 입력 크기(n)에 따른 단
정렬된 리스트에서 주어진 키 존재분할정복Q. 정렬된 리스트 S에 어떤 키 x가 존재하는가? : 존재하면 x의 위치, 아니면 -1 리턴방법1\. Divide S의 가운데 원소와 x를 비교하여 같으면 리턴, 아니면 두개로 분할2\. Conquer x가 정가운데 보다 크면
분할 : 문제 입력사례를 둘 이상의 작은 입력사례로 분할정복 : 작은 입력 사례들을 각각 정복, 재귀호출통합 : 필요하면 작은 입력 사례의 해답을 통합해 원래 해답을 도출분할정복 vs 동적계획하향식 / 상향식 문제풀이 방식분할정복 vs 탐욕법탐욕법은 가장 비효율적인 분
6장 문자열 조작의 내용에 있는 알고리즘을 정리해 보았습니다.팰린드롬은 앞뒤가 같은 문장이나 단어를 뜻한다.주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며 영문자와 숫자만을 대상으로 한다.다음은 데크 자료형을 사용해 최적화 시킨 알고리즘 코드이다.이전
📖 파이썬 알고리즘 인터뷰 이번에 지인에게 추천받은 파이썬 알고리즘 인터뷰 라는 책을 샀다. 코딩 책은 많이 사서 읽는 편이 아니지만, 알고리즘 공부에 도움이 될 것 같아 구매했다. 읽다보니 꽤 잘 정리된 것 같고, 내 생각보다 몰랐던 부분이 많아서 앞으로 정리하
✏️ 가장 흔한 단어 문제 > 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않고, 구두점도 무시한다. 입력 출력 ✍️ 문제풀이 대소문자와 쉼표, 구두점 등을 처리해주는 작업을 한다. (= 데이터클렌징) 개수를 담아두는 변수로
set함수로 중복된 것을 제거한 후, 길이를 반환filter함수로 None 값을 걸면 '', False, 0, None 이 제거된다.비교할 대상인 b를 set함수로 중복 제거 후 a에 있는지 본다.리스트 자르기 사용! 반대인 경우도 포함
나중에 저장된 데이터가 먼저 나오는 구조이다. 데이터의 삽입과 삭제가 한쪽 끝에서만 일어나는 선형 자료구조이다. ex) 프링글스스택은 가장 먼저 들어간 자료가 맨 아래쪽에 쌓이고, 가장 나중에 들어간 자료가 맨 위에 쌓이기 때문에, 먼저 들어간 자료일 수록 나중에 나오
알고리즘 1주차 기록하기 이번주에 할 것은... 알고리즘 공부가 필요한 이유를 이해하기 알고리즘 학습을 위한 기본 코드 구현력을 높이기 시간복잡도, 공간복잡도를 알아보기 Q1. 알고리즘이란? 어떤 문제를 해결하기 위한 방법들의 모임, 어떤 방법이 가장 효율적
스택 > 한쪽 끝으로만 자료를 넣고 뺄 수 있는 자료 구조, Last In First Out 데이터를 넣고 뽑기, 맨 위의 것만 뽑고 넣기 스택의 구현 push(data) : 맨 앞에 데이터 넣기 pop() : 맨 앞의 데이터 뽑기 peek() : 맨 앞의 데이터
📍 트리 > 비선형구조, 계층형, 망의 형태로 표현 ex) 파일 ✏️ 용어 정리 Node: 트리에서 데이터를 저장하는 기본 요소 Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의
📍 Array & Linked List 1. array 배열은 크기가 정해진 데이터의 공간이다. 한 번 정해지면 바꿀 수 없음! 배열은 각 원소에 즉시 접근할 수 있다. (= 상수 시간(O(1)) 내에 접근할 수 있음) 배열은 원소를 중간에 삽입/삭제 하려면 모든
연결되어 있는 정점와 정점간의 관계를 표현할 수 있는 자료구조, 노드(Node): 연결 관계를 가진 각 데이터를 의미합니다. 정점(Vertex)이라고도 합니다.간선(Edge): 노드 간의 관계를 표시한 선.인접 노드(Adjacent Node): 간선으로 직접 연결된 노