본문 바로가기

Data Engineering/Python

(20)
[코테] 프로그래머스 - 미로 탈출 from collections import dequedef solution(maps): def bfs(maps, start, target): n, m = len(maps), len(maps[0]) visited = [[False]*m for _ in range(n)] sx, sy = -1, -1 for i in range(n): for j in range(m): if maps[i][j] == start: sx, sy = i, j break if sx != -1: break ..
[코테] 프로그래머스 - 퍼즐 게임 챌린지 import mathdef solution(diffs, times, limit): def getTime(diffs, times, limit, level): time = 0 for idx, diff in enumerate(diffs): if diff
[코테] 프로그래머스 - 봉인된 주문 # 알파벳을 26진법으로 생각하기def solution(n, bans): # a -> 1, b -> 2 ... aa -> 27, ab -> 28 def str_to_num(s): num = 0 for i, char in enumerate(reversed(s)): num += (ord(char) - ord('a') + 1) * (26 ** i) return num # 1 -> a, 2 -> b ... 27 -> aa, 28 -> ab def num_to_str(num): res = [] while num > 0: num, rem = divmod(num - 1, 26) ..
[코테] 프로그래머스 - 보석 쇼핑 def solution(gems): answer = [0, len(gems)-1] curr = [0, 0] s = set(gems) dict = {} for i, gem in enumerate(gems): # i번째 보석 추가 curr[1] = i dict[gem] = dict.get(gem, 0) + 1 # 현재 구간의 제일 왼쪽부터 제거할 수 있는 보석 제거 for j in range(curr[0], i): first_gem = gems[j] if dict.get(first_gem, 0) > 1: dict[first_gem] -= 1 ..
[코테] 프로그래머스 - 기지국 설치 import mathdef solution(n, stations, w): answer = 0 position = 1 # 각 기지국의 왼쪽 구간 확인 for s in stations: if position
[코테] 프로그래머스 - 완전범죄 def solution(info, n, m): # b/a asc, b desc info.sort(key=lambda x: (x[1]/x[0], -x[1])) sumA, sumB = 0, 0 for i in info: if sumB + i[1]
[코테] 프로그래머스 - 이중우선순위큐 import heapqdef solution(operations): queue = [] for operation in operations: op, num = operation.split(' ') num = int(num) if op == 'I': heapq.heappush(queue, num) elif len(queue) > 0: if num == 1: queue.sort() del queue[-1] else: heapq.heappop(queue) if len(queue) == 0: ret..
[코테] 프로그래머스 - 스티커 모으기(2) def solution(sticker): if len(sticker)