Computer Science 387

[5.15] 05 -1 재귀 알고리즘의 기본

05-1 재귀 알고리즘의 기본 재귀 알아보기 recursion - 자기 자신을 모함하고 자기 자신을 사용하여 정의하는 경우 - recursive call 팩토리얼 알아보기 #양의 정수 n의 팩토리얼 구하기 def factorial(n: int) -> int: if n > 0: return n * factorial(n-1) else: return 1 if __name__ == '__main__': n = int(input('출력할 팩토리얼 값을 입력하세요 : ')) print(f'{n}의 팩토리얼은 {factorial(n)}입니다.') math.factorial() 함수를 사용할 수도 있음. 직접 재귀 direct 와 간접 재귀 indirect 유클리드 호제법 알아보기 두 정수의 최대공약수 GCD를 재귀적..

[5.12] 04-2 큐

04-1 스택 스택 프로그램 나머지 꼼꼼하게 공부할 것! from enum import Enum from class_making import FixedStack Menu = Enum('Menu', ['푸시', '팝', '피크', '검색', '덤프', '종료']) enum : enumeration 열거형 - 고유한 상숫값에 연결된 기호 이름의 집합 이 코드에서는 enum 모듈에서 Enum을 호출했다. class enum.Enum : 열거형 상수를 만들기 위한 베이직 클래스 #print(*myList, sep='\n') #리스트를 프린트하는 법 def select_menu() -> Menu: s = [f'({m.value}{m.name}' for m in Menu] while True: print(*s, s..

[5.11] 04 스택과 큐

04-1 스택이란? 스택 알아보기 stack : LIFO 후입선출 last in first out 방식의 자료구조 push 데이터 넣기 pop 데이터 꺼내기 top 윗부분 bottom 아랫부분 스택 구현하기 스택 배열 stk - 스택 본체 list형 배열 : stk[0] 스택의 buttom 스택 크기 capcity - len(stk) 스택 포인터 : stack pointer - 데이터의 개수를 나타내는 정숫값 cf) from enum import Enum : 열거형 enumeration 지원 스택 클래스 - 예외 처리 클래스 Empty class Empty(Exception): pass - pop, peek를 할 때 쓰임. elif menu == Menu.팝: try: x = s.pop() print(f..

[5.10] * class 보충 학습

41. class 정리 - 클래스 기본적인 사용 - 파이썬 - 기본을 갈고 닦자! (wikidocs.net) 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 생성자와 초기화자 class Flight: def __init__(self): #객체에서 사용할 초기값을 초기화한다. print('init') super().__init__() def __new__(cls): print('new') return super().__new__(cls) def number(self): #파이썬 메서드의 첫번째 파라미터명은 'self'를 사용함. return 'SN060' 객체를 생성 from class_making import Flight f = Flight() #constructor 생성자 pr..

[5.8] 03 검색 알고리즘 - 해시법

내일 아침에 복습할 것. 체인법 해시 프로그램 class ChainedHash 이게 무슨 말이지.. from __future__ import annotations from typing import Any, Type import hashlib class Node: def __init__(self, key:Any, value: Any, next: Node) -> None: self.key = key self.value = value self.next = next class ChainedHash: def __init__(self, capacity : int) -> None: self.capacity = capacity self.table = [None] * self.capacity def hash_value(..

[5.5-6] 03 검색 알고리즘

03-3 이진 검색 binary search 이진 검색 오름차순/내림차순으로 정렬된 배열. 업데이트하는 식으로 정렬함. 종료 조건 - 위치를 찾거나 / 없는 경우 #이진 검색 알고리즘 def binary(a, k): n = len(a) pl = 0 while True: pc = (pl + n) // 2 if a[pc] == k: return pc elif a[pc] n: break return -1 print(binary([1, 2], 1)) - 시작값, 끝값을 새로 설정하고 조정한다. from typing import Any, Sequence def bin_search(a:Sequence, key:Any)-> int: pl = ..

[4.28] 검색 알고리즘

03장 검색 알고리즘 - 데이터 집합에서 원하는 값을 가진 원소를 찾아내는 검색 알고리즘 03-1 검색 알고리즘이란? 검색과 키 - 검색 : 어떤 조건을 만족하는 데이터를 찾아내는 것 - 키 key : 데이터에서 주목하는 항목 검색의 종류 - 배열 검색 : 선형 검색, 이진 검색, 해시법(체인법, 오픈 주소법) : 선형 검색 : 무작위로 늘어놓은 데이터 집합에서 검색 수행 : 이진 검색 : 일정한 규칙으로 배열한 데이터 집합에서 빠른 검색 수행 : 해시법 : 추가, 삭제가 자주 일어나는 데이터 집합에서 빠른 검색 수행 - 연결 리스트 검색 - 이진 검색 트리 검색 03-2 선형 검색 선형 검색 linear search : 선형으로 늘어선 배열에서, 맨 앞에서부터 스캔하여 순서대로 검색하는 알고리즘 = s..

[4.27] 2장(기본 자료구조와 배열) 복습하기

02-1 자료구조와 배열 배열 개념 알아보기 #5명의 시험 점수를 입력받아 합계와 평균 출력하기 def score(n): score = [None] * n test = 0 for i in range(n): score[i] = int(input(f'{i}번째 test score: ')) test += score[i] print(test) print(test // n) score(5) 배열 array 원소 element 인덱스 index 리스트와 튜플 알아보기 리스트 list 튜플 tuple #빈 리스트 만들기, 마지막 원소에 쉼표 써도 됨 x = list() n = [] #빈 튜플 만들기, 원소 1개일 때 쉼표 사용 x = tuple() n = 1, 인덱스로 원소에 접근하기 슬라이스식으로 원소에 접근하기 ..

[4.26] 1장(알고리즘 기초) 복습

1장 알고리즘 기초 01-1 알고리즘이란? 세 정수의 최댓값 구하기 Q. 세 정수의 최댓값 구하기 def max(a, b, c): if a >= b and a >= c: return a elif b > a and b >= c: return b else: return c print(max(1, 2, 3)) Q. 세 정수의 중앙값 구하기 def median(a, b, c): if b b: return sum(b, a) for i in range(a, b+1): s += i return s print(sum(5, 4)) 반복 과정에서 조건 판단하기 2 Q. +와 - 반복해서 출력하기 def plus(n): if n % 2 == 0: return '+-' * (n//2) else: return '+-' * (n..

[4.24] 2장 마무리

은 1) 인수가 이뮤터블일 때(ex) int) : 매개변수 값을 변경하면 -> 다른 객체를 생성하고, 그 객체를 참조함 2) 인수가 뮤터블일 때(ex) list) : 매개변수 값을 변경하면 -> 객체 자체를 업데이트함. : 리스트에서 임의의 원솟값을 업데이트할 때 입력 : 리스트 x, 업데이트할 인덱스, 새로운 값 출력 : 업데이트된 리스트 x def change(lst, idx, val): ''' lst[idx]의 값을 val로 업데이트 해준다 ''' lst[idx] = val return lst x = [0, 1, 2] print(change(x, 0, 3)) 입력 : n 출력 : 정수 n 이하의 소수를 나열하기 소수 - n보다 작은 수로 나누었을 때 나누어떨어지는 수가 자신과 1뿐임 def prim..