본문 바로가기

Programming6

[프로그래머스] 스택/큐 주식가격 (with.python) 1. 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 2. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 3. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 4. solution.py def solution(prices): answer = [] temp = [0] * len(prices) for i in range(0, len(prices)): count=0 for j in range(i+1, len(prices)): if prices[i] 2021. 9. 8.
[프로그래머스] 스택/큐 프린터 (with.python) 1. 문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 그렇지 않으면 J를 인쇄합니다. 2. 제한 사항 현재 대기목록에는 1개 이상 100개 이하의 문서가 있습니다. 인쇄 작업의 중요도는 1~9로 표현하며 숫자가 클수록 중요하다는 뜻입니다. location은 0 이상 (현재 대기목록에 있는 작업.. 2021. 9. 7.
[프로그래머스] 스택/큐 기능개발 (with.python) 1. 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 2. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100.. 2021. 9. 6.
자료구조 (1) - 배열(Array), 링크드 리스트(Linked List), 큐(Queue), 스택(Stack) (with.Python) 자료구조(Data Structure)란? 자료구조의 정의 전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법입니다. 데이터 특성에 따라서, 체계적인 데이터 구조화가 필요하며, 이러한 데이터 구조는 코드의 효율성과 성능을 결정합니다. 자료구조의 종류 대표적인 자료구조로는 배열(Array), 큐(Queue), 스택(Stack), 링크드 리스트(Linked List), 해쉬 테이블(Hash Table), 힙 (Heap) 등이 존재합니다. Python에서는 대표적으로 List, Tuple, Set, Dictionary가 존재하며, 위의 자료구조 대부분을 모두 구현할 수 있습니다. 1. 배열(Array) 장점 : Array는 논리적 순서와 물리적 순서가 일치합니다. 따라서 index값을 통한 원.. 2021. 6. 29.
Sorting (2) - 정렬 알고리즘 구현하기 (Shell, Merge, Quick) (with.Python) Shell Sort (셸 정렬) 주어진 간격(일반적으로 k)만큼 떨어진 서브배열을 만들어 삽입정렬을 수행한다. 시간복잡도는 평균적으로 O(n log n), 최고 O(n), 최악의 경우 O(n^2)의 시간복잡도를 가지고 있다. 간격에 따른 성능이 제각각이라 시간복잡도 분석이 쉽지 않다. 간격은 홀수로 지정하여, 간격이 절반으로 줄어들 때 짝수가 나오면 +1을 하여 홀수로 만든다. def gapInsertionSort(x, start, gap): for target in range(start+gap, len(x), gap): val = x[target] i = target while i > start: if x[i-gap] > val: x[i] = x[i-gap] else: break i -= gap x[i.. 2021. 6. 28.
Sorting (1) - 정렬 알고리즘 구현하기 (Bubble, Selection, Insertion) (with.Python) Bubble Sort (버블정렬) 인접한 두 원소를 검사하여 큰 값이 오른쪽으로 이동하는 과정을 반복하여, 비교했던 모든 값들의 최댓값을 맨 오른쪽으로 옮긴다. 시간복잡도가 최악의 경우 (Big O) O(n^2)로 (n-1) + (n-2) + ··· + 1번 비교가 이루어진다. 그러나, 데이터가 잘 정렬되어 있다면 O(n)으로 데이터 정렬 여부를 파악하기 위한 알고리즘으로 사용될 수 있다. def swap(x, i, j): x[i], x[j] = x[j], x[i] def bubbleSort(x): for size in reversed(range(len(x))): for i in range(size): if x[i] > x[i+1]: swap(x, i, i+1) return x if __name__ ==.. 2021. 6. 28.