⚡️algorithm/accepted 14

[BFS, 파이썬] 2146. 다리만들기 (!!)

메모리 초과 ➔ 정답처리 ➔ 개선 분석한 차이점 메모리 초과 케이스 (1차코드) : 56번쯤 라인에 바다 & 거리값 입력 안되어있으면 지금까지 온 거리 +1 이랑 기존 입력값이랑 min 비교하는데, 안해도 됨.. . BFS가 어떤 식으로 전개되는지 잘 안그려진다. 이 조건이 2차 코드에서 왜 없어도 되는지 이해가 잘 안간다. BFS는 칸마다 최단거리로 채워진다는 특징 때문인듯, 이미 방문했으면 굳이 안채워도 되나봐 secChecked 라고 구획을 그린 그래프를 별도로 두고, 이거로 visited도 판단함.. 그래프가 커질수록 부하가 걸렸나 => 메모리 초과의 원인인 듯 정답처리 된 케이스 (2차코드) : 섬 입력받은 표에 그대로 구획을 표시한거로 활용하고, visited True False 로 접근해서 ..

[combinations, Counter, 빈도] 프로그래머스 lv2. 메뉴리뉴얼

문제 from itertools import combinations def solution(orders, course): comb_dic = {long: {} for long in course} selected = set() for long in course: best_num = 2 for guest in orders: comb = list(map(sorted, combinations(guest, long))) comb = ["".join(arr) for arr in comb if len(arr) > 0] for e in comb: if not e: continue key = "".join(sorted(e)) if key in comb_dic[long].keys(): comb_dic[long][key] ..

[queue] 프로그래머스 lv2. 두큐합 같게 만들기 (feat. deque의 주요 메서드)

아직 잘 모르겠는 문제, 외우고 쳐보는 것도 잘 안된다. 참고한 후, 답안 from collections import deque def solution(queue1, queue2): answer = 0 mid = sum(queue1) + sum(queue2) if mid % 2 != 0: return -1 tot //= 2 q1 = deque(queue1) q2 = deque(queue2) sum1 = sum(queue1) sum2 = sum(queue2) while q1 and q2: if sum1 > mid: tmp = q1.popleft() sum1 -= tmp sum2 += tmp elif sum1 < mid: tmp = q2.popleft() q1.append(tmp) sum1 += tmp su..

[DFS, 기본] 백준 2667. 단지번호 붙이기

import sys sys.stdin = open(&#39;graph input.txt&#39;, &#39;rt&#39;) input = sys.stdin.readline size = int(input()) graph = [list(map(int, input().rstrip())) for _ in range(size)] print(graph) apt = [] dx = [1,-1,0,0] dy = [0,0,1,-1] def DFS(x,y): global cnt if 0 탐색 시간복잡도 단지수(V) : N**2 연결(E) : 4*N**2 O(V+E) : 5N**2 => N*2 => 25\*2 => 625 : 2억보다 작음 자료구조 리스트? visited => graph 문제 접근하는 루틴을 연습해봤다. 추가..