전체 글 70

[algorithm][python] 이진 탐색

순차탐색(Sequential Search) 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 리스트에 특정 값 원소가 있는지 체크할 때 count() 메서드 이용 시 시간 복잡도 O(N) #순차 탐색 소스코드 def sequential_search(n, target, array): for i in range(n): if array[i] == target: return i + 1 print("생성할 원소 개수를 입력한 다음 한 칸 띄고 찾을 문자열을 입력하세요.") input_data = input().split() n = int(input_data[0]) target = input_data[1] print("앞서 적은 원소 개수만큼 문자열을 입력하세요. 구분은..

Algorithm 2022.06.10

[TS] 1. 타입스크립트 시작하기

타입스크립트란? 자바스크립트에 타입을 부여한 언어. 실행하기 위해 컴파일이 필요함 왜 써야할까? → 자바스크립트에 타입이 있으면 무엇이 좋을까 function sum(a,b){ return a+b; } sum(10,'20'); //1020 (not 30) 자바스크립트에서는 의도하지 않은 인자의 전달도 실행돼 시스템의 오류를 일으킬 수 있음 function sum(a: number, b: number): number { return a + b; } result = sum(10, '22'); // error result = sum(10, 22); result.toLocaleString(); 타입스크립트로 타입을 명시해주면 경고, 에러가 발생해 이를 방지할 수 있음 사전방지 결과물이 제공하는 api를 바로 볼..

JSTS 2022.06.08

[algorithm][python] 정렬

Selection Sort 매번 ‘가장 작은 것’을 선택해 앞으로 보낸다 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] print(array) 시간 복잡도: O(N^2) Insertion Sort 특정한 데이터를 적절한 위치에 ‘삽입’한다. 삽입 정렬은 필요할 때만 위치를 바꾸므로 ‘데이터가 거의 정렬되어 있을 때’ 효율적이다. 삽입 정렬은 첫 번째 데이터는 그 자체로 정렬되어 있다고 ..

Algorithm 2022.06.06

[algorithm][python] DFS, BFS

재귀함수 컴퓨터 내부에서 재귀함수의 수행은 스택 자료구조를 이용한다. 따라서 스택 자료구조를 활용해야 하는 상당수 알고리즘은 재귀 함수를 이용해서 간편하게 구현될 수 있다. → ex) DFS 반복문 대신에 재귀 함수를 이용하면 더 간결한 코드를 작성할 수 있다. DFS Depth-First Search, 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 그래프는 노드(node)와 간선(edge)로 표현한다. 그래프의 두가지 표현방식 (연결이 되어 있지 않은 노드끼리는 무한(infinity)의 비용이라고 작성한다) 인접 행렬(adjacency matrix): 2차원 배열로 그래프의 연결 관계를 표현 INF = 999999999 # 무한의 비용 선언 # 2차원 리스트를..

Algorithm 2022.06.06

[algorithm][python] stack, queue

스택 선입후출(FILO), 후입선출(LIFO) 파이썬에서는 스택을 이용할 때 별도의 라이브러리를 사용할 필요가 없다. 기본 리스트에서 append()와 pop() 메서드를 이용하면 스택 자료구조와 동일하게 작동한다. 큐 선입선출(FIFO) 파이썬으로 큐를 구현할 때는 collections 모듈에서 제공하는 deque 자료구조를 활용한다. deque는 스택과 큐의 장점을 모두 채택해 데이터를 넣고 빼는 속도가 리스트 자료형에 비해 효율적이며 queue 라이브러리를 이용하는 것보다 더 간단하다. from collections import deque queue = deque() queue.append(5) queue.append(2) queue.append(3) queue.popleft() print(queu..

Algorithm 2022.06.06

[python] isalpha, isalnum/ isnumeric, isdigit, isdecimal 함수

isalpha() 문자열이 문자로만 되어있는지 확인 후 True, False로 리턴공백문자, ':', 숫자로 된 문자 등 안됨 isalnum() 문자열이 영어, 한글 혹은 숫자로만 되어있는지 확인 후 True, False로 리턴공백문자, ':'등 안됨 text1 = "check me" text2 = "123456" text3 = "안녕하세요2" #isalpha() print(text1.isalpha()) #False print(text2.isalpha()) #False print(text3.isalpha()) #False #isalnum() print(text1.isalnum()) #False print(text2.isalnum()) #True print(text3.isalnum()) #True (isa..

Algorithm 2022.06.06

[python] lambda 표현식

람다(lambda) 1. 의미 익명함수를 지칭하는 용어 즉, 기존의 함수(명 등)을 선언하고 사용하던 방식과는 달리 바로 정의하여 사용할 수 있는 함수. 그래서 호출하면, 그대로 호출하면 함수 객체가 나온다.사용할 때는 변수에 할당하거나 해줘야 함. (귀찮은 과정을 생략하고 쉽게 임시로 생성하여 쓰고 버리기 용이한 함수랄까?) 2. 형식 lambda 인자 : 표현식 예시) add_num = lambda x: x+1 3. 다양한 응용법 3-0. 할당하지 않고 쓰기 람다 표현식을 괄호로 묶은 뒤에 다시 괄호를 붙이고 인수를 넣어 호출 >>>(lambda x: x + 10)(1) 11 3-1. 인자 두 개 쓰기 lambda x,y: x+y 가 가능하다 3-2. if 사용하기 check_pass = lambda..

Algorithm 2022.06.06

[python] collections 모듈 연습

1. collections 모듈 collections 모듈에선 namedtuple(), OrderedDict, Counter, defaultdict, deque 등을 제공한다. (tuple, dict에 대한 확장 데이터 구조를 제공) Counter 클래스는 파이썬의 기본 자료구조인 사전(dictionary)의 확장(자식 클래스)이다.즉, 사전에서 제공하는 API를 그대로 사용할 수 있다. 2. 준비 다음과 같이 임포트하여 바로 사용하면 된다. from collections import Counter 사용 할 때에는 다음과 같이 list이나 string을 Counter안에 넣고인스턴스로 만들어서 사용. text = "Hello my name is" li = [1,2,3,"d","d",1,1,2,"go"] ..

Algorithm 2022.06.06