본문 바로가기

반응형

Programming/[자료구조, 알고리즘]

(7)
[Python] 큐(Queue) 구현 1. 개발 환경 : Python 3.8.10, WSL2, VSCODE 2. 큐(Queue) 2.1. 큐의 개념 줄을 서는 행위와 유사 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 (FIFO, First In First Out) 스택과 꺼내는 순서가 반대입니다. (스택은 LIFO) Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 Front : 데이터를 꺼내는 쪽 Rear : 데이터를 넣는 쪽 2.2. 파이썬 큐(queue) 라이브러리 import queue 하여 사용할 수 있습니다. Queue() : 일반적인 큐 자료구조 >> queue.Queue() LifoQueue() : 나중에 입력된 데이터가 먼저 출력 (스택구조) >> queue.LifoQueue..
[Python] 스택(Stack) 구현 1. 개발 환경 : Python 3.8.10, WSL2, VSCODE 2. 스택(Stack) 이란? 스택은 데이터가 쌓여져 있는 자료 구조를 의미합니다. 쌓여진 물건을 꺼낼 때 맨 위의 물건부터 꺼내게 됩니다. 마찬가지로 스택에서는 가장 마지막에 입력된 데이터가 먼저 출력되는 LIFO(Last In First Out) 정책을 따릅니다. 데이터를 제한적으로 접근할 수 있습니다. 2.1. 스택의 장점 구조가 단순하고, 구현이 쉽습니다. 데이터 저장/읽기 속도가 빠릅니다. 2.2. 스택의 단점 데이터 최대 갯수를 미리 정해야합니다. 파이썬의 경우는 재귀함수 1000번까지만 호출 가능합니다. 예상 최대 갯수만큼 공간을 확보하여야 하므로 저장공간의 낭비가 발생됩니다. 3. python으로 스택 클래스 구현하기 p..
[Python]기수 변환하기(n진수 구하기) 정숫값을 임의의 기수(n진법으로 표기되는 숫자)로 변환하는 알고리즘을 살펴보겠습니다. 10진수 정수를 n진수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 몫을 반복해서 나눠야 합니다. 몫이 0이 될 때까지 이 과정을 반복하고 나열된 나머지를 역순으로 늘어놓으면 기수로 변환한 수가 됩니다. 몫과 나머지를 나열하는 것이 중요합니다!!!!! 이해가 안가실 수 있으니 예시와 함께 살펴보겠습니다. ex1) 59를 2진수로 변환 계산식 몫과 나머지 59/2 29 1 29/2 14 1 14/2 7 0 7/2 3 1 3/2 1 1 1/2 0 1 나머지를 맨 밑부터 나열하게 되면 2진수로 변환한 수 가 됩니다. 111011(2) 1+2+8+16+32 = 59 이므로 변환이 잘 된것을 확인할 수 있습니다. ex..
[Python] mutable, immutable 간략한 메모 python은 변수를 변경할 때 값을 복사하는 것이 아니라 값을 참조하는 객체의 식별 번호가 변경되는 것이다. n = 12 print(id(n)) n += 1 print(id(n)) 8790812107520 8790812107552 다음과 같이 n=12에서 13으로 바뀌었을때 id가 변경된 것을 확인할 수 있다. mutable 리스트, 딕셔너리, 집합 등이 있으며 값을 변경할 수 있다. immutable 수, 문자열, 튜플 등이 있으며 값을 변경할 수 없다.
[Python] 재귀함수 : 피보나치 수, 팩토리얼 백준 피보나치 문제를 해결하던 중 답은 맞게 나오는데 도저히 넘어가질 않아서 원인을 찾던 중 재귀함수의 형태로 코딩을 해야한다는 것을 알았다. (for문이 좋은데..) 재귀함수란?? 자기 자신을 재참조 하는 함수로 정의 단계에서 자기 자신을 사용하는 함수를 의미합니다. 팩토리얼을 예시로 설명하면 for문을 사용했을 때 코드는 다음과 같습니다. def factorial(): answer = 1 N = int(input()) for i in range(1,N+1): answer *= i return print(answer) factorial() for문으로 정의했을 때에는 정수 n을 받아 1부터 곱하는 형태로 정의하였다면 재귀함수는 def fact(n:int) -> int: if n == 0: return ..
[Python]1부터 n까지 정수의 합 구하기 1부터 n까지 정수의 합을 구하는 알고리즘을 살펴보겠습니다. 1+2+~+n 값을 구해보겠습니다. 실습)1-7 # 1부터 n까지 정수의 합 구하기1 (while문) print('1부터 n까지 정수의 합을 구합니다.') n = int(input('n값을 입력하세요.: ')) sum = 0 i = 1 while i
[Python]조건문과 분기 앞 부분은 이미 개인적으로 공부를 했고, 간단한 부분이기 때문에 업로드 생략하겠습니다. 실습1-3은 입력받은 정수값의 부호를 판단하여 출력하는 프로그램입니다. 프로그램 흐름의 분기를 알아 보도록 하겠습니다. 실습)1-3 입력받은 정수의 부호 출력하기 명령어 # 입력받은 정수의 부호(양수 음수 0) 출력하기 n = int(input('정수를 입력하세요: ')) if n > 0: print('이 수는 양수입니다.') elif n < 0: print('이 수는 음수입니다.') else: print('이 수는 0입니다.') 터미널 출력 정수를 입력하세요: 17 이 수는 양수입니다. 정수를 입력하세요: -5 이 수는 음수입니다. 정수를 입력하세요: 0 이 수는 0입니다. 위 프로그램의 경우 2개가 동시에 실행되거..

반응형