프로그램 개발/Python 20

[코딩 인터뷰]자료구조 - 트리와 그래프 문제(Python)

[ 대부분의 문제에 사용한 Node 클래스 ] class Node: def __init__(self, name): self.name = name self.left = None self.right = None [ 노드 사이의 경로 ] 방향 그래프가 주어졌을 때 두 노드 사이에 경로가 존재하는지 확인하는 알고리즘 이 문제에서 사용할 Node와 Graph▼ 더보기 state = ("Unvisited", "Visited", "Visiting") class Node: def __init__(self, name): self.name = name self.state = state[0] self.adjacent = [] def setAdjacent(self, node): self.adjacent.append(node)..

[코딩 인터뷰]자료구조 - 스택과 큐 문제(Python)

[ 한 개로 세 개 ] 배열 한 개로 스택 세 개 구현 class threeInone: def __init__(self): self.items = [] self.stackCnt = {1: 0, 2: 0, 3: 0} self.stackNumError = 'I have only 3 stacks' def pop(self, stackNum: int): idx = -1 if stackNum not in self.stackCnt.keys(): return self.stackNumError else: if self.stackCnt[stackNum] != 0: self.stackCnt[stackNum] -= 1 for i in range(1, stackNum+1): idx += self.stackCnt[i] else:..

[코딩 인터뷰]자료구조 - 연결리스트 문제(Python)

[ 연결리스트] Python으로 노드와 연결리스트를 간단하게 구현했습니다. # 노드 class Node: def __init__(self, d): self.data = d self.next = None # 연결리스트 class LinkedList: def __init__(self, data): self.head = Node(data) def appendNode(self, data): now = self.head while now.next is not None: now = now.next now.next = Node(data) def appendNode2(self, node:Node): now = self.head while now.next is not None: now = now.next now.next..

[코딩 인터뷰]자료구조 - 배열과 문자열 문제(Python)

[ 중복이 없는가 ] 문자열이 주어졌을 때 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘 예시) hi ⇒ True, hello ⇒ False(l이 2개) def isUniqueChars(string): char_set = set() for s in string: if s in char_set: return False else: char_set.add(s) return True 👀 set을 사용한 이유는 특정 원소를 검색하는 연산이 O(1)의 시간 복잡도를 가지기 때문입니다. dictionary도 검색 연산이 O(1)이지만 굳이 키 값을 넣을 필요는 없기 때문에 사용하지 set으로 사용했습니다. [ 순열 확인 ] 문자열 두 개가 주어졌을 때 이 둘이 서로 순열 관계에 있는지 확인하는 알고리..

[python] 정규표현식 예시 모음

정규표현식 : 정규표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어입니다. 자세한 설명은 아래의 사이트를 참고하시길 바랍니다. https://wikidocs.net/4308 ⭐ 사용 예시 import re pattern = '^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' p = re.compile(pattern) emails = ['python@mail.example.com', 'python+hi@example.com', # 올바른 형식 '@example.com', 'python@example', 'python@example-com'] # 잘못된 형식 for email in emails: print(p.match(email)..

[python] 뫼비우스 함수

👀 뫼비우스 함수 : 정수가 제곱인수가 없는 정수인지 여부에 따라 분류하는 곱셈적 함수. 기호 : μ(n) 예) μ(1) = 1, μ(7) = -1, μ(30) = μ(2×3×5) = (-1)^3 = -1 ✔️ 뫼비우스 함수 ⭐ 약수 구하기와 소수 판별하기 응용 def mobius(n): d = divisors(n) for i in d: if i**2 in d: return 0 return (-1)**(sum([is_prime(i) for i in d])) def divisors(n): result = set() for i in range(2, int(n**0.5)+1): if n%i == 0: result.add(i) result.add(n//i) return sorted(result) + [n] de..

[python] 소인수분해

👀 소인수분해 : 자연수를 소인수의 곱으로 나타낸 것 예) 10을 소인수분해 : 10 = 2×5 ⭐ 소인수 : 자연수의 인수 중 소수 ⭐ 소수 : 약수가 1과 자기 자신 뿐인 자연수 ✔️ 소인수분해 함수 입력 n이 2이상일 때 {소수1: 갯수1, 소수2: 갯수2, ...}형태로 반환. def factorization(n): a, result = 2, {} while n>1: while not n%a: if not a in result.keys(): result[a] = 1 else: result[a] += 1 n //= a a += 1 return result

numpy

0. numpy import numpy : python에서 Numpy를 사용하려면 먼저 import 시켜줘야 합니다. import numpy as np : numpy를 사용할 때 보편적으로 np라는 약자로 줄어서 사용을 많이 합니다. as 뒤에 원하는 것을 붙여도 좋지만 np로 붙여주는 것이 좋습니다. 1. array(리스트) : 리스트를 numpy를 사용할 수 있는 ndarray로 변환시켜줍니다. # array 사용법 import numpy as np array1 = np.array([[1], [2], [3]]) print(array1) 출력 결과 [[1] [2] [3]] 2. shape : ndarray의 모양을 (row, column) 형태로 알려줍니다. # shape 사용법 import numpy..

728x90