목록분류 전체보기 (108)
모눈종이에 사각사각
클래스를 사용하는 이유 추상화된 현실의 개념을 구체적인 파이썬 코드로 표현하기 위해 고양이 : 고양이 클래스(추상적인 개념) 주황색의 이름이 미미인 고양이 : 인스턴스(색, 이름등 구체적 값을 가짐) 클래스 생성 ## 클래스 정의하기 class Cat: # 인스턴스 변수와 메소드 구현하는 위치 def meow(self): # meow() 메소드 정의 print("야옹") ## 인스턴스 생성 및 메소드 호출 ### 메소드 호출은 마침표 연산자 사용 cat1 = Cat() # 인스턴스 생성 cat1.meow() # 메소드 호출 인스턴스 변수 생성 class Cat: def info(self): # info() 메소드 self.name = "나비" # 인스턴스 변수 name 생성 self.color = "검정..
import re s = re.sub('[^a-z0-9]', '', s) - 알파벳과 숫자가 아닌 것들을 ''으로 치환 s = re.sub(r'[^\w]', ' ', s) - \w는 영숫자 문자나 밑줄과 일치를 뜻함. ([a-zA-Z0-9_]) -> 단어 문자(Word Character) - 단어 문자가 아닌 모든 문자를 공백으로 치환 참고사이트 https://myeonguni.tistory.com/1555
str.isalpha() : str이 알파벳인지 검사 str.isdigit() : str이 숫자인지 검사 str.isalnum() : str이 알파벳 혹은 숫자인지 검사 str.islower() : str이 소문자인지 검사 str.isupper() : str이 대문자인지 검사 str.lower() : str을 소문자로 출력 str.upper() : str을 대문자로 출력 ex1 = 'AbCdEfG' ex2 = 'ABC' ex3 = '1' ex4 = '34fgd' print(ex1.isalpha()) print(ex2.islower()) print(ex2.isupper()) print(ex3.isdigit()) print(ex4.isalnum()) print(ex1.lower()) print(ex1.upp..
이번 포스팅에서는 최단 경로 알고리즘에 대해 다뤄보고자 한다. 최단경로 알고리즘은 이름에도 나와있듯이 가장 짧은 경로를 찾는 알고리즘이다. '길찾기' 문제라고도 불린다. 최단경로 알고리즘은 대표적으로 세 가지가 있다.(컴공 학부수준) 1. 다익스트라 알고리즘 2. 플로이드 워셜 알고리즘 3. 벨만 포드 알고리즘 1, 2번이 코딩테스트에서 가장 많이 등장하는 유형이라고 한다. 먼저 다익스트라 최단 경로 알고리즘에 대해 알아보고자 한다. 🥝 다익스트라 최단 경로 알고리즘 -> 한 지점에서 다른 모든 지점까지의 최단 경로 - 특정한 노드에서 출발하여 다른 노드로 가는 최단 경로를 구해주는 알고리즘 - 기본적으로 그리디 알고리즘으로 분류 (매번 가장 비용이 적은 노드를 선택해서 임의의 과정을 반복하기 때문) 동..
이번 포스팅에서는 이진 탐색 알고리즘에 대해 설명하고자 한다. 이진 탐색에 대해 설명하기 전에 먼저 순차 탐색에 대해 알아보자 🍀 [순차 탐색 Sequential Search] 순차 탐색은 말그대로 앞에서부터 순차적으로 하나씩 확인하며 탐색하는 것이다. 보통 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용한다. 따라서 시간복잡도는 \(O(N)\)이다. 🍀 [이진 탐색 Binary Search] 이진 탐색은 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 것이다. 배열 내부의 데이터가 정렬되어 있을 때만 사용할 수 있으며, 정렬 되어 있을 경우, 빠르게 데이터를 찾을 수 있다는 장점이 있다. 이진 탐색은 변수를 3개 사용한다. 1. 시작점 2. 끝점 3. 중간점 찾으려는 데이터와 중간점 위치에 있는 데..
정렬은 데이터를 특정한 기준에 따라 순서대로 나열하는 것이다. 정렬의 종류에는 여러 가지가 있는데, 그중에서 선택정렬, 삽입정렬, 퀵정렬, 계수정렬에 대해 알아볼 것이다. 정렬을 하면 이진 탐색이 가능해지기 때문에 잘 알아두면 도움이 많이 될 것 같다. 우선 정렬의 종류를 알아보기 전에 정렬 알고리즘의 두 가지 성질을 먼저 알아볼 것이다. 🍁 정렬 알고리즘의 두 가지 성질 1. stable vs unstable - 같은 숫지면 입력된 순서가 정렬 후에도 그대로 유지되도록 하는 게 더 바람직하다! -> stable하다! 2. in-place vs not in-place - 정렬을 하면서 추가로 사용하는 메모리의 양 - in-place는 기존 리스트에서 정렬을 하는 것이고, not in-place는 리스트를..
코딩 테스트에서 많이 출제되는 알고리즘 중 하나인 DFS와 BFS에 대해 알아보고자 한다. 계속 공부하지만 문제를 풀 때마다 헷갈리기에, 이번 포스팅을 계기로 확실하게 개념을 익히는 것이 목표이다. 🍀 DFS(Depth-First Search, 깊이 우선 탐색) DFS는 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 특정한 경로를 탐색하다가 특정한 상황에서 최대한 깊숙이 들어가서 노드를 방문한 후, 다시 돌아가 다른 경로를 탐색한다. [스택 자료구조를 이용한 DFS 동작 과정] 탐색 시작 노드를 스택에 삽입 -> 방문 처리 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리 -> 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냄 2번의 과..
이번 포스팅에서는 그리디 알고리즘에 대해 알아보고자 한다. 그리디 알고리즘은 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향은 고려하지 않는다. 따라서 그리디 해법은 그 정당성 분석이 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토해야 한다. 🍀 거스름 돈 문제 거스름 돈으로 사용할 돈은 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다. 손님에게 거슬러 줘야 할 돈이 N원일 때, 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. -> 그리디 알고리즘을 활용해 풀 수 있는 대표적인 문제 🍀 정당성 분석 그리디 알고리즘을..