코딩(5)
-
[Python] When we use deque ?
deque는 무엇인가? "deque"는 파이썬의 collections 모듈에 있는 자료구조 중 하나이다. "deque"는 "double-ended queue"의 약자로, 큐(queue)의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. deque는 리스트(list)와 비슷하지만 몇 가지 측면에서 다른데, 주요 특징과 사용 사례는 다음과 같다: 양방향 삽입 및 삭제: "deque"는 양쪽 끝에서 원소의 삽입과 삭제가 빠르게 이루어진다. 이는 큐의 FIFO(First-In-First-Out)와 스택의 LIFO(Last-In-First-Out) 모두를 지원한다. 고정된 크기의 큐: "deque"는 최대 길이(maxlen) 매개변수를 사용하여 큐의 최대 크기를 제한할 수 있다. 큐가 가득 찬 경우에는 새로..
2024.02.18 -
[Python] Talking about DFS , backtracking algorithm
백트래킹(backtracking)이란? : 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 최적화 문제와 결정 문제를 푸는 방법이 됩니다. 😀 DFS와 백트래킹 깊이 우선 탐색(DFS) DFS는 가능한 모든 경로(후보)를 탐색한다. 따라서, 불필요할 것 같은 경로를 사전에 차단하거나 하는 등의 행동이 없으므로 경우의 수를 줄이지 못한다. 따라서 N! 가지의 경우의 수를 가진 문제는 DFS로 처리가 불가능하다. 백트래킹(Backtracking) 해를 찾아가는 도중, 지금의 경로가 해가 될 것 같지 않으면 그 경로를 더 이상 가지 않고 되돌아간다. 코딩에서는 반복문의 횟수까지 줄일 수 있으므로 효율적이다. 이것을 가지치기라고 하는데, 불필요한 부분을 쳐내고 최대한 올바..
2024.02.13 -
[Python] baekjoon 7785 : 회사에 있는 사람
How ? 기본적으로 집합 , 맵의 카테고리에 속하는 문제이기 때문에 map을 사용해서 문자열을 처리해야한다는 생각은 하고있었다. 첫번째로 sys를 사용하지않고 그냥 input()을 사용해서 시간초과가 난건가 싶었지만 그건 아니였고, 두번째로 list를 사용하여 append와 remove를 사용하여 사용자의 출근과 퇴근을 처리해주었다. 하지만 이는 시간초과로 이어지게 되었다. 이름을 탐색하고 추가/제거할 때 리스트 전체를 탐색하고 있기 때문이다. 리스트의 크기가 커질수록 이 작업은 선형 시간이 걸리므로 시간이 많이 소요될 수 있다. 그렇기 때문에 딕셔너리를 사용해주도록 하자. 또한 문제를 보면 정렬을 하라고 적혀있다. 딕셔너리의 key를 기준으로 정렬해줄 때는 다음과같은 형식을 사용하도록 하자 sorte..
2024.02.13 -
[Python] Stack and Queue
대표적인 자료구조로는 스택과 큐가 존재한다. 간단하게 말하자면 스택은 Last in , First out 이고 큐는 First in , First out 이라고 할 수 있다. 이를 간단하게 예를들어 설명해보자 스택 ( Stack ) 나중에 넣은 데이터를 먼저빼는 후입선출을 따른다. 예를들면 박스를 쌓는다거나 , 트럭에서 물건을 넣는 상황을 상상해보면 쉽다. 박스를 쌓을 때 박스를 차곡차곡 쌓다가, 뺄 때는 가장 최근에 넣은 것 부터 빼는 구조이다. 당연히 맨 아래것부터 빼는것은 불가능하겠지. 파이썬에서는 기본 리스트에서 append()를 사용하거나 pop() 매서드를 사용하여 구현한다. stack = [] stack.append(1) # stack: [1] stack.append(2) # stack: [..
2024.02.13 -
[Python] 당신이 파이썬 가상환경을 사용해야하는 이유
파이썬을 처음 배우고 로컬에서 그냥 개발을 진행했을 때 가상환경의 필요성을 느끼지 못한다. 하지만 프로젝트를 진행하거나 pip install의 버전관리가 쉽지 않을 때마다 가상환경의 필요성을 느끼곤 한다. 파이썬 가상 환경을 사용해야 하는 이유는 다음과 같다: 1. **프로젝트 간 의존성 분리**: 각각의 프로젝트마다 필요한 라이브러리와 패키지의 버전이 다를 수 있다. 예를 들어 openai 의 버전만 해도 기능에 따라서 버전을 다르게 요구하기도 한다. 가상 환경을 사용하면 각 프로젝트의 의존성을 분리하여 각 프로젝트가 필요로 하는 라이브러리를 독립적으로 관리할 수 있다. 2. **파이썬 버전 관리**: 서로 다른 파이썬 버전이 필요한 경우에도 가상 환경을 사용하여 각 프로젝트마다 필요한 파이썬 버전을 ..
2024.02.05