Algorithms 💻

    자주 쓰이는 기본적인 정규표현식(Regex) 정리

    자주 쓰이는 기본적인 정규표현식(Regex) 정리

    정규표현식 확인할 수 있는 사이트 regexr.com/5mhou 여기서 \는 back slash를 의미 code 의미 code 의미 gr(e|a)y e또는 a로 이루어진 문자 gr[ead]y 대괄호 중 하나라도 만족하는 문자 찾기 [a-zA-z0-9] 모든 소문자, 대문자, 숫자를 모두 찾음 [^a-zA-z0-9] 뒤 집합을 제외한 나머지 것 (^) gra?y 물음표 앞 a가 있거나 없는 경우 (zero or one) gra*y * 앞 a가 있거나, 없거나, 많거나를 찾음 (zero or more) gra+y 하나 또는 많이, 없는 경우는 포함X (one or more) gra{2}y a가 두번나오는 경우만 선택 gra{2,3}y a가 최소 2번, 최대 3번 나오는 경우 선택 \bYa 맨 앞에서 쓰이는 ..

    [자료구조] - (2) 스택(Stacks) with Python

    [자료구조] - (2) 스택(Stacks) with Python

    스택(Stacks) 역시 추상적 선형 자료 구조 중 하나이다. 본 게시글은 Python 코드로 작성되었습니다. 1. 스택의 구조 기본적으로 스택은 넣을 때는 한쪽 끝에서 밀어넣어야 하고(push), 꺼낼 때에는 같은 쪽에서 뽑아 꺼내야한다.(pop) 간단히 그림으로 나타내면 다음과 같다. 이와 비슷한 선형 자료구조 큐(Queue)는 좀 다르다. 큐는 '선입선출'의 구조로서, 먼저 들어간 요소가 가장 먼저 나오는 구조이다. 기본적으로 스택은 한쪽에서 꺼내고 빼고를 하는 반면, 큐는 한쪽에서 들어가면 다른쪽에서 나온다! 그리고 스택은 가장 마지막에 들어간 요소가 가장 먼저 나온다 (후입선출) 스택에는 정해진 저장 공간이 있다. 따라서 비어있는 스택에서 원소를 꺼내려 하거나, 꽉찬 스택에 데이터 원소를 넣으려..

    [자료구조] (1) - 연결리스트(Linked List) with Python

    [자료구조] (1) - 연결리스트(Linked List) with Python

    연결리스트는 대표적인 추상적 자료구조(Abstract Data Structures) 중 하나이다. 본 게시글은 Python 코드로 작성되었습니다. 1. 단순 연결리스트의 기본 구조 각 연결리스트는 Node로 구성되어있고, Node안에는 data와 link로 구성되어있다. 안에 들어있는 data는 그림에 나와있는 정수형 말고도 문자, 레코드 등 여러 구조가 가능하다. Node를 코드로 구성해보면 다음과 같다! class Node: def __init__(self, item): self.data = item # data self.next = None # next link (다음 인자를 가리킴) 여기서 next는 다음 노드에 접근하는 방법이다. 예시 ) L.head == a a.next == b b.next ..

    [Project Euler] Problem 1 ~ 7번 알고리즘 풀이

    1. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면? s = 0 for i in range(1000): if i%3==0 or i%5==0: s = s + i else: pass print(s) 2. 4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 ? n1 = 0 n2 = 1 n3 = n1+n2 result = 0 while n3

    [알고리즘] - 선형배열(리스트 내 해당 원소의 인덱스 반환)

    ✔ 주안점 index의 중복처리 반환(존재하는 모든 원소의 인덱스를 반환해야 했던 것) 💻 부끄러운 나의 코드 def solution(L, x): answer = [] if x in L: for i in range(len(L)): a = L[i] if x == a: if i< len(L): answer.append(L.index(a, i)) else: answer.append(L.index(a, i-1)) # 인덱스에 집착하다보니 index method를 이용할 수밖에 없었음. ... # 그 결과.. 비효율적인 코드 완성됨.. else: pass else: answer.append(-1) return answer ✔ 문제점 - 또 비슷하게 if/else 식의 코드 진행.... 으... 극혐.... - i..

    [알고리즘] - 선형배열 (정렬된 리스트에 원소 삽입하기)

    ✔ 주안점 - 원소가 기존 리스트의 원소보다 가장 크거나 가장 작은경우를 예외로 처리해야 했던 것 💻 부끄러운 내 코드 def solution(L, x): last = int(len(L)-1) for i in range(last): if int(L[i]) int(max(L)) : L.insert(int(len(L)), x) break elif x < int(min(L)): L.insert(0, x) break else: pass return L ✔ 문제점 - 단순 if와 else를 반복한 코드임. 너무 길고 불필요함...