본문 바로가기

분류 전체보기

[Python] Linked List (1) # typing hint 입력을 위한 라이브러리 호출 import typing Problem 13. Palindrome Linked List https://leetcode.com/problems/palindrome-linked-list/ 실행시간 비교 풀이 방식 Big-O 실행시간 순위 1 리스트 변환 O(n) 2위 2 데크를 이용한 최적화 O(n) 1위 Solution 1. 리스트 변환 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def isPalindrome_1(head: ListNode) -> bool: q: List = [] if not head: return True node = head.. 더보기
[Python] Array (2) In [1]: from typing import List, Set, Dict, Tuple Problem 9. 3Sum https://leetcode.com/problems/3sum/ 실행시간 비교 풀이 방식 Big-O 실행시간 순위 1 브루트 포스로 계산 O(n³) 2위 2 Two Pointer O(n²) 1위 Solution 1. 브루트 포스로 계산 In [8]: def three_sum_1(nums: List[int]) -> List[List[int]]: results = [] nums.sort() # 브루트 포스 3회 반복 for i in range(len(nums)-2): # 중복된 값 건너뛰기 if i > 0 and nums[i] == nums[i-1]: continue for j in rang.. 더보기
[Python] Array (1) Problem 7. Two Sum https://leetcode.com/problems/two-sum/ 풀이 방법 별 실행 시간 및 Big-O 비교 풀이 방식 Big-O 실행시간 순위 1 브루트 포스로 계산 O(n²) 5위 2 in을 이용한 탐색 O(n²) 4위 3 dictionary로 target - 1st value 조회 O(n) 공동 3위 4 dictionary로 조회 & for loop 단일화 O(n) 공동 3위 5 Two Pointer O(n) 1위 Solution 1. 브루트포스 가능한 모든 경우를 탐색하여 원하는 결과를 얻음 In [2]: # typing hint를 위한 라이브러리 호출 from typing import List, Set, Dict, Tuple In [39]: # 브루트포스 .. 더보기
머신러닝을 위한 Pandas 기초 Pandas 기본 개념 데이터 : 일반적으로 2차원 (row * column) numpy보다 유연하고 편리한 데이터 핸들링 numpy의 ndaaray 내의 데이터 타입은 그 연산의 특성상 같은 데이터 타입만 가능함(한 개의 ndarray 객체에 int, float 함께 존재 X) pandas의 DataFrame내에는 column마다 다른 data type이 가능 핵심 객체 : DataFrame(행,열로 구성된 2차원 데이터를 담은 데이터 구조체) Series : 칼럼이 1개뿐인 데이터 구조체 DataFrame : 칼럼이 여러 개인 데이터 구조체 index : 개별 데이터를 고유하게 식별하는 Key값, Series와 Dataframe 모두 index를 가짐 주로 read_csv(filepath_or buf.. 더보기
[Python] 문자열 조작 Python 문자열 조작 출처 : 점프투파이썬 위키독스 https://wikidocs.net/4308 * 모든 문제는 leetcode에서 참조함* Problem 1. 유효한 팰린드롬 https://leetcode.com/problems/valid-palindrome/ Solution 1. 브루트포스 방식 In [1]: import re import collections class Solution_1(): def valid_palindrome_1(string: str) -> bool: # 가장 먼저 떠오른 풀이 string = string.lower() string = re.sub(r'^\w','',string) # 아래 두 풀이의 isalnum()은 브루트포스방식이지만 정규식 처리가 더 빠름 return.. 더보기
머신러닝을 위한 Numpy 기초 1. 넘파이 기본 개념 >> 수치해석용 Python 라이브러리 Numerical Python의 약자 C로 구현 (파이썬용 C라이브러리) loop 사용하지 않는 대량 데이터 배열 연산 가능(Vectorization) 빠른 수치 계산을 위한 Structured Array 제공 >> 학습을 위해 참고할 링크 Home : http://www.numpy.org/ Documentation : http://docs.scipy.org/doc/ Tutorial http://www.scipy-lectures.org/intro/numpy/index.html https://docs.scipy.org/doc/numpy-dev/user/quickstart.html >> Numpy의 필요성 C/C++과 같은 저수준 언어 기반의 호.. 더보기
Python 기반의 머신러닝 생태계 이해하기 01. 머신러닝 개념 >> 머신러닝이란? 머신 러닝은 사람이 경험을 통해 학습하는 것과 같은 활동을 컴퓨터가 수행할 수 있도록 가르치는 데이터 분석 기법입니다. 머신 러닝 알고리즘은 미리 결정된 방정식을 모델로 의존하지 않고, 계산 방법을 사용하여 데이터에서 직접 정보를 “학습”합니다. 학습할 수 있는 샘플 수가 증가함에 따라 알고리즘 성능이 향상됩니다. 또한, 달리 표현하면 애플리케이션의 수정 없이 데이터를 기반으로 패턴을 학습하여 결과를 예측하는 알고리즘 기법을 통칭한다고 말할 수 있습니다. >> 머신러닝의 특징 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해 냄 예측 오류를 최소화하기 위해 다양한 수학적 기법을 적용함 단점 : 데이터 의존적. 일명 Garbage in, Garba.. 더보기