본문 바로가기

분류 전체보기263

[프로그래머스] - 길 찾기 게임 (파이썬) import sys sys.setrecursionlimit(10**3) class Node: def __init__(self, index, x, y): self.index = index self.x = x self.y = y self.left = None self.right = None class Tree: def __init__(self, index, x, y): self.head = Node(index, x, y) def insert(self, index, x, y): curr = self.head while True: if curr.x > x: if curr.left == None: curr.left = Node(index, x, y) break else: curr = curr.left else: .. 2022. 2. 15.
[프로그래머스] - 무지의 먹방 라이브 (파이썬) # 무지의 먹방 라이브 import heapq def solution(food_times, K): answer = -1 food = [] for i in range(len(food_times)): heapq.heappush(food, (food_times[i], i+1)) prev = 0 l = len(food) while food: temp = (food[0][0] - prev) * l if K >= temp: K -= temp prev, _ = heapq.heappop(food) l -= 1 else: index = K % l food.sort(key=lambda x: x[1]) answer = food[index][1] break return answer 2019 카카오 블라인드 - 4번 1. fo.. 2022. 2. 15.
[프로그래머스] - 후보키 (파이썬) # 후보키 from itertools import combinations def solution(relation): answer = 0 N, M = len(relation), len(relation[0]) arr = [] for i in range(1, M+1): arr.extend(combinations(range(M), i)) total = [] for x in arr: isOK = True for t in total: for k in t: if k in ''.join(map(str, x)): isOK = False else: isOK = True break if not isOK: break if isOK: if check(x, relation): total.append(list(map(str, x).. 2022. 2. 15.
[프로그래머스] - 실패율 (파이썬) # 실패율 def solution(N, stages): answer = [[i, 0] for i in range(N+2)] arrive = [0] * (N+2) for x in stages: arrive[x-1] += 1 for i in range(len(arrive)-1, 0, -1): arrive[i-1] += arrive[i] for i in range(1, len(arrive)): if arrive[i-1] != 0: answer[i][1] = (arrive[i-1] - arrive[i]) / arrive[i-1] answer.sort(key=lambda x: -x[1]) result = [] for i, x in answer: if i != 0 and i != len(answer)-1: resu.. 2022. 2. 15.
[프로그래머스] - 오픈채팅방 (파이썬) # 오픈채팅방 uuid = dict() id_name = dict() def solution(record): answer = [] i = 0 for str in record: if str.split()[0] == 'Leave': type, id = str.split() name = id_name[id] answer.append([name, '님이 나갔습니다.']) uuid[id].append(i) i += 1 else: type, id, name = str.split() id_name[id] = name if type == 'Enter': if uuid.get(id): id_name[id] = name change(id, name, answer) uuid[id].append(i) else: uuid[id.. 2022. 2. 15.
[백준] 2357번 - 최솟값과 최댓값 (파이썬) # 최솟값과 최댓값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) tree = [[MAX, 0] for _ in range(N+1)] tree2 = [[MAX, 0] for _ in range(N+1)] def update(i, target): while i 0: tree2[i][0] = min(tree2[i][0], target) tree2[i][1] = max(tree2[i][1], target) i -= (i & -i) def find(start, end): result_min = MAX re.. 2022. 2. 13.
[백준] 10868번 - 최솟값 (파이썬) # 최솟값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) def update(i, target): while i 0: update(i, x) update2(i, x) for _ in range(M): start, end = map(int, input().split()) print(find(start, end)) 자료구조, 펜윅트리 1. 입력을 받고 트리를 두 가지를 할당해준다. 2. 초기값을 이용해서 펜윅트리를 업데이트해준다. - update : 앞에서 뒤로 펜윅트리를 만든다. - update2 :.. 2022. 2. 13.