분류 전체보기

    [python] 백준 - 13335. 트럭

    [python] 백준 - 13335. 트럭

    🤔문제 해결 S1 | 스택 대기중인 트럭, 다리위의 트럭, 다리위의 트럭의 진입 시간 을 각각의 리스트로 구성한다. 다리 위의 트럭 중 가장 앞쪽의 트럭의 진입 시간 + 다리의 길이 가 현재시간과 같으면 그 트럭을 빼준다. (도착) 다리 위의 트럭 무게의 합 + 대기 중인 트럭 중 가장 앞쪽의 트럭 무게 가 다리의 하중보다 작으면 그 트럭을 대기중인 트럭에서 빼서 다리위의 트럭으로 넣어준다. (출발) 💨 💻소스 코드 from collections import deque def solution(n, w, L, trucks): trucks = deque(trucks) # 대기중인 트럭 on_the_bridge = deque() # 다리위의 트럭 departure_time_truck = deque() # 각 ..

    window 10 Home Docker install ( with Hyper-V )

    window 10 Home Docker install ( with Hyper-V )

    📕 윈도우 10 홈 도커 & 하이퍼 V 설치 🔴 Windows 10 Home 😂 hyper-V는 가상화 시스템으로 windows에서 가상 다양한 운영체제를 가상 머신을 이용해 실행할 수 있다. 그러나 windows 10 Home 버전에서는 Docker 를 설치 할 수 없다. ( pro, enterprise, education 만 가능 ) 그래도 Docker 를 사용할 수 있는데, Docker ToolBox를 이용해서 사용할 수 있긴 하다. 하지만 우리는 Hyper-V 활성화 시킨 후 Docker 까지 설치해 보자. 🔴 Hyper-V 활성화 원래 제어판 > 프로그램 > 프로그램 및 기능 > windows 켜기/끄기 에서 Hyper-V 를 활성화 해야한다. 하지만 우리 Home 버전에는 없다... 그래서 H..

    [python] 백준 - 2617. 구슬 찾기

    [python] 백준 - 2617. 구슬 찾기

    🤔문제 해결 S1 | 그래프, BFS 원래 그냥 막 풀어서 해결했는데 문제에서 BFS라고 하길래, 다시 풀어봤다. 그래프 문제를 해결할 줄 알면 문제는 간단했다. 두개의 인접리스트를 만든다. ( 나보다 무거운 애들, 나보다 가벼운 애들 ) 두개의 인접리스트를 만든다. ( 나보다 무거운 애들, 나보다 가벼운 애들 ) 모든 번호를 차례로 BFS 탐색한다. 그 때 각 번호마다 이웃들의 개수를 카운트해준다. 개수가 노드개수의 절반 이상이면 가운데 후보가 될 수 없으므로 답에 +1을 해준다. 💨 두번째에 있는 메모리 초과는 visited 배열을 따로 사용하지 않아서 중복이 많이 발생했다. 💻소스 코드 from collections import deque def solution(N, M, compare): answ..

    [python] SWEA - 6019. 기차 사이의 파리

    [python] SWEA - 6019. 기차 사이의 파리

    🤔문제 해결 D3 | 수학? 파리와 맞은 편 기차가 만나는 시간은 t 로 같다 파리와 맞은 편 기차가 이동한 거리의 합은 D 이다. 이렇게 저렇게 식을 계산 해보면 파리가 이동한 거리는 파리가 이동한거리는 따로 누적해주고, 파리의 속력과 이동한거리가 있으므로 시간을 구해주고 구한 시간으로 기차의 이동거리를 구해준다. 그럼 남은 기차사이의 간격은 (기존의 기차사이의 간격 - 두 기차의 이동거리) 💻소스 코드 if __name__ == "__main__": T = int(input()) for tc in range(1, 1 + T): # 사이의 거리, A 속력, B 속력, 파리 속력 D, A, B, F = map(int, input().split()) # s = v*t 파리가 날아간 거리 fly_d = 0 ..

    [python] 백준 - 16953. A → B

    [python] 백준 - 16953. A → B

    🤔문제 해결 S1 | 그래프, BFS 난 DFS 알고리즘 분류에는 그래프와 BFS로 나와있는데 잘 모르겠고, DFS로 해결했다. 목표 숫자부터 두가지 경우로 나눠서 들어간다. 맨 끝의 숫자가 1이면 1을 버리고 재귀 맨 끝의 숫자가 1이 아닐 때 2로 나누어 떨어지면 2로 나누고 재귀 테스트 케이스 3번을 예시로 하겠다 ( 100, 40021 ) 40021: 맨 끝의 숫자가 1이므로 1을 버린다 40021 => 4002 체크하는 방법은 10으로 나눈 나머지, 버리는 방법은 10으로 나눈 몫 4002: 맨 끝의 숫자가 1이 아니고 2로 나누어 떨어지므로 2로 나눈다. 4002 => 2001 2001: 버린다. 2001 => 200 200: 나눈다. 200 => 100 100: 100 == A 이므로 그만!..

    [python] SWEA - 1248. 공통조상

    [python] SWEA - 1248. 공통조상

    🤔문제 해결 D5 | 그래프 이진 트리를 만들어서 문제를 해결하자. 이런식으로 2차원 배열을 만든다. 길이가 3인 리스트가 V개인 2차원리스트 부모 노드들 찾기첫 노드 (여기서는 8 과 13) 에서 시작해서 부모 노드를 타고 쭉 올라간다. ( DFS ) 8 의 부모 노드는 [5, 3, 1] 13의 부모 노드는 [11, 6, 3, 1] 공통 부모 노드 찾기 앞에서부터 for문을 돌며 겹치는 친구 찾고 바로 나오기 (여기서는 3) 공통 부모 노드 크기 찾기 노드(여기서는 3)에서 자식 노드를 타고 쭉 내려가면서 개수를 세어준다(DFS) 💨 💻소스 코드 def find_parent(n, parent_list): if tree[n][2]: parent_list.append(tree[n][2]) find_pare..