Queue? 가장 처음에 삽입된 데이터를 먼저 뺄 수 있는 방식(First in First Out) 형식의 자료구조 Queue의 연산 enqueue(data) : data를 Queue의 가장 마지막에 추가한다. dequeue() : Queue의 가장 최근에 추가된 data를 제거하고 반환한다. peek() : pop()과 달리 가장 최근에 추가된 data를 반환하고, 제거하진 않는다. is_empty() : pop()을 수행하기 위해서는 추가된 data가 존재하여야 하는데 이를 판별하기 위함이다. Queue를 활용하는 경우 선입선출이 필요한 경우 프로세스 관리, 우선순위 대기열, 프린터 출력 처리 등 BFS 구현 Queue의 선입선출 방식을 통해 BFS를 구현할 수 있다. DFS의 경우 Stack을 사용..
Stack? 가장 마지막에 삽입된 데이터를 먼저 뺄 수 있는 방식(Last in First Out) 형식의 자료구조 Stack의 연산 push(data) : data를 stack의 가장 마지막에 추가한다. pop() : stack의 가장 마지막에 추가된 data를 제거하고 반환한다. peek() : pop()과 달리 가장 최근에 마지막의 data를 반환하고, 제거하진 않는다. is_empty() : pop()을 수행하기 위해서는 추가된 data가 존재하여야 하는데 이를 판별하기 위함이다. Stack을 활용하는 경우 재귀 호출 재귀적으로 함수를 호출하는 경우, 가장 마지막에 호출된 함수 부터 차례로 실행결과를 반환한다. 따라서 재귀 호출의 경우 Stack을 통해 이를 가능하도록 한다. 수식의 괄호 검사 (..
문제 Peaks coding task - Learn to Code - Codility Divide an array into the maximum number of same-sized blocks, each of which should contain an index P such that A[P - 1] A[P + 1]. app.codility.com 문제 풀이 각 구간을 나눌 때, 각 구간마다 peek를 포함하여야 한다. 문제를 해결하기 위해 peek인 구간을 찾는다. 나눌 수 있는 구간은 주어진 A 리스트의 길이의 약수를 의미하는 것이므로, 약수에 대한 구간을 확인하고 peek를 포함하는 지 확인한다. 코드 def solution(A): peeks = [] length = len(A) f..
문제 MinPerimeterRectangle coding task - Learn to Code - Codility Find the minimal perimeter of any rectangle whose area equals N. app.codility.com 문제 풀이 Count Factor의 경우 약수를 단순히 카운트 하였다면, 넓이가 주어질 때 가장 작은 둘레를 가지는 경우를 찾는 문제이다. 넓이가 주어질 때, 두 변의 길이가 되는것은 각각의 약수 이므로, 약수 중 가장 큰 약수를 통해 계산된 둘레를 반환하면 된다. 코드 import math def solution(N): for num in range(int(math.sqrt(N)), 0, -1): if N % num == 0: break retu..