[백준/Python] 10845번 - 큐
·
Algorithm/BaekJoon
import sys from collections import deque input = sys.stdin.readline q = deque() for _ in range(int(input())): command = input().rstrip() if command == "pop": print(-1 if len(q) == 0 else q.popleft()) elif command == "size": print(len(q)) elif command == "empty": print(+(not q)) elif command == "front": print(-1 if len(q) == 0 else q[0]) elif command == "back": print(-1 if len(q) == 0 else q[-1])..
[Go] 메모리 누수(Memory Leak) 예방하기
·
Error Handling
회사 프로젝트 서버에서 메모리 누수로 인해 서버가 계속 죽다 살아나는 현상이 관찰되었다. 70%을 향해 치솟는 memory usage와 10% 이하에서 평온하게 노는 cpu usage 메모리 누수가 어디서 발생하는지 정확하지 않아서 인터넷 검색을 통해 go 프로젝트에서 주의해야할 부분에 예방 코드를 모조리 집어넣었다. 아래 그 예방 코드들과 이유에 관해 정리해보려고 한다. -> 그리고 현재는 프로젝트에서 발생하는 메모리릭 문제를 완전히 해결했다! (마무리 부분을 참고) 아래 글을 참고하여 작성되었다. Avoiding Memory Leak in Golang APIFinding Memory Leak in Go Service50 Shades of Go0) Lock 확인하기여러 프로젝트에서 발생하는 메모리 누수..
[백준/Python] 16200번 - 해커톤
·
Algorithm/BaekJoon
import sys input = sys.stdin.readline # 팀의 수가 최소 # i번은 팀원 수가 자기 자신 포함 xi명 이하여야함 n = int(input()) xi = [0 for _ in range(n+1)] # xi의 범위는 1 O(n) 다른 사람 풀이 - 위 아이디어를 좀 더 간단하게 구현할 수 있다. xi 배열을 인원수 측정에 사용하지 않고 그냥 입력값 그대로 받아서 오름차순으로 정렬한다. 그리고 그냥 최대 인원 수 대로 끊어서 센다(간단 그잡채ㅋㅋㅋㅋ내 고민이 너무 허무해~) N = int(input()) X = list(map(int,input().split())) X.sort() i, cnt = 0, 0 while i < len(X): cnt += 1 i += X[i] prin..
[백준/Python] 7785번 - 회사에 있는 사람
·
Algorithm/BaekJoon
import sys input = sys.stdin.readline manage = {} for _ in range(int(input())): employee, status = input().rstrip().split() if employee in manage and status == 'leave': del manage[employee] else: manage[employee] = 1 print(*sorted(manage.keys(), reverse=True), sep='\n') 해시맵, 파이썬의 딕셔너리로 풀면 간단하게 해결되는 문제다. 답을 출력할 때 포인터와 sep 파라미터를 이용하여 간단하게 출력했다. 시간 복잡도 입력받은 n만큼 로그 기록을 살펴봐야함: for문 => O(n)
[백준/Python] 2164번 - 카드 2
·
Algorithm/BaekJoon
import sys from collections import deque input = sys.stdin.readline n = int(input()) q = deque([i for i in range(1, n+1)]) while len(q)!=1: q.popleft() q.append(q.popleft()) print(q[0]) 큐로 풀면 되는 아주 간단한 문제다 시간 복잡도 deque는 double-linked list로 구현되어 있음 그래서 양 끝의 요소의 추가/삭제가 O(1)을 만족 반면, Python의 list는 fixed size memory blocks(array)로 구현되어 있음. 링크드 리스트처럼 보이지만 고정된 사이즈의 메모리를 갖는 array 따라서 리스트의 마지막 원소 삭제는 O(1..
[백준/Python] 15988번 - 1, 2, 3 더하기 3
·
Algorithm/BaekJoon
import sys input = sys.stdin.readline DIV = 1000000009 dp = [1, 2, 4, 7] for _ in range(int(input())): # 방법의 총 수 dp, 순서 바꾸는 것도 포함이네.. n = int(input()) for i in range(len(dp), n): # 알아서 1, 2, 3이 각각 들어갈 것 -> 겹치는게 없음 dp.append((dp[i-1] + dp[i-2] + dp[i-3]) % DIV) print(dp[n-1]) 점화식은 발견 했는데 시간 초과, 메모리 초과를 어떻게 해결해야할지 생각해내는게 어려웠다. 이를 해결한 방법은 다음과 같다. 1. 모든 테스트케이스는 같은 DP 값을 가지니 DP를 global 하게 사용 2. 이미 있는..