practivceAlgorithm 570

[programmers][Python] 2021 kakao blind 메뉴 리뉴얼

sets에 조합 출현 갯수 cnt ans_set에 2번이상이고 최고 많이 나온 comb 입력 answer에 ans_set에 들어간 comb만 추출 후 정렬 반환 from collections import defaultdict from itertools import combinations def solution(orders, course): answer = [] sets = defaultdict(int) for order in orders: order = sorted(list(order)) for num in course: for new_comb in combinations(order, num): sets[''.join(list(new_comb))] += 1 ans_set = {num: [] for num..

[programmers][Python] 2021 kakao blind 신규아이디 추천

규칙에 따라 parsing def solution(new_id): answer = '' for char in new_id: if char.isalpha(): answer += char.lower() elif char == '.' and answer and answer[-1] != '.': answer += '.' elif char.isdigit() or char in '-_': answer += char if not answer: answer += 'a' elif len(answer) > 15: answer = answer[:15] if answer[-1] == '.': answer = answer[:-1] while len(answer) < 3: answer = answer + answer[-1] re..

[백준][Python] 20168 골목대장 호석

그냥 다익스트라 한번으로는 안된다. 최대한계값을 정해주고 돌려야한다. 최대한계값은 이분탐색으로 찾는다., import heapq import sys input = sys.stdin.readline def dijkstra(mid): dist = [float('inf')] * (N + 1) dist[start] = 0 H = [(0, start)] while H: dist, cur_node = heapq.heappop(H) if dist[cur_node] mid: continue if dist[next_node] > dist + cost: dist[next_node] = dist + cos..

[백준][Python] 2469 사다리 타기

위에서 start배열 swap 아래서부터 받아온 last 배열 swap 후 비교해주며 *, - 더해주기 import sys input = sys.stdin.readline k, n = int(input()), int(input()) start = [] for i in range(k): start.append(chr(ord('A') + i)) last = list(input().rstrip()) ladder_game = [list(input().rstrip()) for _ in range(n)] flag = 0 for row in range(n): if flag: break for col in range(k - 1): if ladder_game[row][col] == '-': start[col], star..

[백준][Python] 18115 카드 놓기

deque와 맨앞 요소만 책임지는 front배열을 두어 운용했습니다. import sys input = sys.stdin.readline from collections import deque N = int(input()) a = list(map(int, input().split()))[::-1] floor = [i for i in range(N, 1, -1)] front = [1] q = deque() for command in a[1:]: if command == 1: q.appendleft(front.pop()) front.append(floor.pop()) elif command == 2: q.appendleft(floor.pop()) else: q.append(floor.pop()) answer ..