문제 포인트 최소힙 자료구조를 구현하라 최소힙 자료구조는 부모가 자식보다 작으면 되고, 같은 형제 레벨에서 순서는 상관이 없다. my_solution tmp = [] while True: num = int(input()) if num == -1: sys.exit() elif num != 0: tmp.append(num) elif num == 0: if tmp: tmp.sort() # 그나마 정렬해서 pop 하는건 5초짜리는 통과함.. print(tmp.pop(0)) # print(tmp.pop(tmp.index(min(tmp)))) # 5초짜리도 case5 타임아웃 else: print(-1) continue list, pop() 사용 (최소힙 자료구조 몰랐음) 이렇게 하니 pop()연산때문에 입력값이 ..
문제 포인트 최소힙을 사용하여 최대힙으로 구현해보자 heapq 자료구조는 무조건 최솟값만을 위한 자료구조이기 때문에 이 자료구조를 사용하여 최솟값을 판별하기 위해서는 약간의 트릭이 필요하다. 바로 -로 push하는 것. 3,4 있으면 3이 더 작은 숫자지만 -3, -4가 있으면 -4가 더 작은 숫자가 된다. 이렇게 push하고 마지막에 pop()하는 단계에서 - 붙여서 pop()하주면 그게 가장 큰 값이다. solution """ 힙큐 자료구조는 무조건 최소힙을 만들어내기 때문에 최대힙을 사용하기 위해서는 - 값으로 push하여 - 값을 붙인 상태로 출력하면 최댓값 출력 가능. """ tmp = [] while True: num = int(input()) if num == -1: sys.exit() el..
문제 포인트 하나의 자연수 N이 주어졌을 때, 1~N까지의 원소를 갖는 부분집합을 모두 출력해야한다. 이때 공집합의 출력은 제외한다. 입력 예제 3 출력 예제 1 2 3 1 2 1 3 1 2 3 2 3 생각 재귀 함수를 사용하여 이 문제를 풀기 위해서는 상태 트리를 먼저 직접 그려보는 것이 좋다. 입력 예제가 3이므로 3을 예로 상태트리를 그려보면 다음과 같이 그려질 것이다. 1의 경우: 1을 원소로 사용한다, 사용하지 않는다의 두가지 갈래로 나뉜다. 각 갈래에서 원소에 1을 더한 상태에서 같은 방법으로 각각 두가지 갈래를 나눠 사용하는 경우와 사용하지 않는 경우를 판별한다. n + 1의 경우까지 이 과정을 반복한다. 위의 상태 트리를 코드로 구현하면 다음과 같다. def recursive(value):..
- Total
- Today
- Yesterday
- 빅데이터를지탱하는기술
- CS
- 네트워크
- GROK
- DFS
- kubernetes
- Hadoop
- Algorithm
- 빅데이터
- DP
- Flutter
- BOJ
- HDFS
- 파이썬
- sqoop
- heapq
- elasticsaerch
- 이코테
- oozie
- cka
- logstash
- 프로그래머스
- Python
- mahout
- Elasticsearch
- Espher
- kafka
- OS
- CSAPP
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |