Python 다익스트라(Dijkstra)
46:56
Пікірлер
@KMK-s4e
@KMK-s4e 28 күн бұрын
풀이 코드보면 aababab 입력이 오면 a3ab 가 되지 않을텐데라고 생각했는데 제가 문제를 잘못 이해했던거 같네요
@user-sm9yy3un1g
@user-sm9yy3un1g Ай бұрын
와.... 명강의.. 자세히 알려주셔서 정말 감사합니다!!!!!!
@sorryShen
@sorryShen Ай бұрын
😃
@박철현-j2y
@박철현-j2y 2 ай бұрын
감사합니다!! 비트연산 많이 해봐야 할꺼같긴하네요 ㅠ
@박철현-j2y
@박철현-j2y 2 ай бұрын
와 감사합니다 ㅜ 진짜어려운데 차근차근 설명해주셔서 감사합니다!!!
@momdongles
@momdongles 4 ай бұрын
14:02 i번째 원소를 추가하는 부분의 예시 부분에 오타가 있는듯합니다. 0101 | (1<<1) = 0101 | 0010 = 0111이 되어야할것같아요!
@조성호-i6d
@조성호-i6d 4 ай бұрын
감사합니다
@범-w8k
@범-w8k 5 ай бұрын
카카오 해설보다 더 쉽게 이해되네요
@argenyoo9456
@argenyoo9456 5 ай бұрын
감사합니다!😄
@argenyoo9456
@argenyoo9456 5 ай бұрын
감사합니다 잘봤습니다! 짝 홀로 나누는 경우 재밌네용
@ssgo3954
@ssgo3954 5 ай бұрын
어 이목소리 우리회사 교육 동영상에 나오는 아저씨 목소리인데..
@HiHoseonLee
@HiHoseonLee 6 ай бұрын
와 저런 방식으로 풀고 싶었는데, 알려주셔서 감사합니다^^!
@66yurimi99
@66yurimi99 6 ай бұрын
안녕하세요. 13:55 i번째 원소 추가 예시에서 '|' 자리에 '&'로 오타가 있어 댓글 남깁니다. 올려주신 영상들이 코딩 테스트 준비에 많은 도움이 되고 있습니다! 정말 감사합니다.
@Wasabi_boy
@Wasabi_boy 6 ай бұрын
감사합니다 😭
@qwert1005
@qwert1005 6 ай бұрын
solution(v)가 배열로 리턴될때 answer= '('+배열+')' 이 str + 배열이라 안되지 않나요??
@csezsw
@csezsw 6 ай бұрын
solution()함수는 string type으로 리턴합니다. 입력으로 받은 string type의 p를 substring하고 concatenation하는 겁니다.
@박상현-b3k2g
@박상현-b3k2g 7 ай бұрын
몇년째 잘 보고있습니다. 직장다니시면서도 코테 감각유지하시는게 진짜 대단하시고 부럽습니다.
@csezsw
@csezsw 7 ай бұрын
오랜 시청 감사드립니다.
@chickennoir691
@chickennoir691 7 ай бұрын
어떻게 이런 아이디어를 낼 수 있는거지... 따흐흑
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다. 구현이 까다로운 문제이긴 합니다.
@user-mh6gt1ml6o
@user-mh6gt1ml6o 7 ай бұрын
이해하기 쉽게 천천히 잘 설명하시네요 영상 잘 봤습니다~
@csezsw
@csezsw 7 ай бұрын
감사합니다. 많은 시청 부탁드려요.
@윤승환-p4z
@윤승환-p4z 7 ай бұрын
감사합니다.
@csezsw
@csezsw 7 ай бұрын
많은 시청 감사합니다.
@jusjsjsiwuiw
@jusjsjsiwuiw 7 ай бұрын
좋은 영상 감사합니다!!
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@윤승환-p4z
@윤승환-p4z 7 ай бұрын
꾸준히 감사합니다
@csezsw
@csezsw 7 ай бұрын
자주 못 올려 죄송합니다.
@brb2189
@brb2189 7 ай бұрын
오랜만에 영상 올려주셔서 감사합니다!
@csezsw
@csezsw 7 ай бұрын
자주 못 올려 죄송합니다.
@user-we1ko8hp7i
@user-we1ko8hp7i 7 ай бұрын
ezsw 당신은 신이야
@csezsw
@csezsw 7 ай бұрын
감사합니다. 과찬입니다.
@jongillee4949
@jongillee4949 7 ай бұрын
차분하고, 쉬운설명 감사합니다.
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@찰떡쿠킹
@찰떡쿠킹 7 ай бұрын
캬 잘보구갑니다!ㅎㅎ 감사합니다!
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@user-qe8sw9xj7o
@user-qe8sw9xj7o 8 ай бұрын
감사합니다.... ! 쵝오 !!! 새해복 많이받으세요.
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다. 새해 복 많이 받으세요.
@BIG_TRAIN
@BIG_TRAIN 8 ай бұрын
머리 나쁜 나로써는 머리가 아프다
@csezsw
@csezsw 7 ай бұрын
어려울 수도 있습니다. 다른 영상들이 도움이 되기를 바라겠습니다.
@user-qe8sw9xj7o
@user-qe8sw9xj7o 8 ай бұрын
최고최고!!
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@jerry-yi8et
@jerry-yi8et 8 ай бұрын
안녕하세요! 덕분에 막막했던 다익스트라 알고리즘을 이해할 수 있었습니다 감사해요 ㅎㅎ 개인 공부 목적으로 PPT에 코드를 그림과 함께 정리해봤는데, 개인 블로그에 게시해도 될까요? 답변 기다리겠습니다.
@csezsw
@csezsw 7 ай бұрын
출처 남겨주시면 괜찮습니다.
@castle.m486
@castle.m486 8 ай бұрын
감사합니다! 얼마나 많이 풀어봐야 이런 풀이법을 생각할 수 있을까요 ㅠ 열심히 해보겠습니다
@csezsw
@csezsw 7 ай бұрын
개인차가 있어서 딱 말씀드리긴 어렵네요. 많은 시청 부탁드립니다.
@cho7669
@cho7669 9 ай бұрын
영상 설명 진심으로 감사드립니다! 혹시 음식을 저장하는 과정에서 LinkedList를 사용하신 특별한 이유가 있으신가요?
@csezsw
@csezsw 7 ай бұрын
아니요. 다른 자료 구조를 사용하셔도 괜찮습니다.
@ryuli3
@ryuli3 9 ай бұрын
설명 잘 해 주셔서 감사합니다~!!
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@박철현-j2y
@박철현-j2y 9 ай бұрын
감사합니다! 근데 혹시 split 메서드를 쓰면 문자열의 처음이나 맨끝에 구분자 문자 나오면 공백 문자열이 추가되는 것으로 아는데 check메서드 호출하는 부분에서 String이 빈 문자열이 아닐때만 검사하도록 해야하지 않나요?
@csezsw
@csezsw 7 ай бұрын
맨 앞에 0이 있으면 그렇게 되긴 하겠지만 convert()에서 문자열 맨 앞에 0이 만들어지는 경우는 없습니다. 그리고 맨 뒤에 0이 있는 경우에는 split에서 빈 문자열이 만들어지지 않습니다.
@이지섭-h4v
@이지섭-h4v 9 ай бұрын
아니 어떻게 이런 풀이법을 바로 생각해내는거지...
@csezsw
@csezsw 7 ай бұрын
많이 풀어 보는 방법밖에는 없습니다.
@user-dr6bd3sm8i
@user-dr6bd3sm8i 10 ай бұрын
정말 감사합니다... 풀이를 봐도 이해를 못하고 있었는데 바로 이해가 됐습니다...
@csezsw
@csezsw 7 ай бұрын
시청 감사합니다.
@-3-0418
@-3-0418 10 ай бұрын
설명 감사드립니다. 혹시 for문에서 i++ 대신 ++i를 쓰시는 이유가 있을까요? 속도면에서 차이가 발생하나요?
@csezsw
@csezsw 9 ай бұрын
일단 결론적으로 속도 차이가 없습니다. C++에서 비롯된 습관인데, 전위연산자의 경우 그 값을 증가시키고 반환하는데 반해서, 후위연산자의 경우 현재 값을 임시 변수에 저장하고, 값을 증가시킨 다음에 임시변수 값을 반환합니다. 그래서, 변수 type이 iterator와 같은 객체인 경우에는 임시 객체가 생성되는 overhead 때문에 for 문에서는 전위연산자를 사용합니다. (C++) 그런데, Java에서는 이렇게 사용할 경우가 없어서, 아무거나 쓰셔도 상관 없겠습니다.
@kimhi5931
@kimhi5931 11 ай бұрын
진짜 천재다...
@csezsw
@csezsw 9 ай бұрын
감사합니다. 크게 어려운 문제는 아닙니다.
@Mynameissecret115
@Mynameissecret115 11 ай бұрын
선생님, 혹시 인프런에 강의 없으십니까? c++ 나 자바로 있으면 댓글 부탁드립니다!
@csezsw
@csezsw 9 ай бұрын
아니요. 없습니다. 개인적으로 하고 싶기는 하지만, 우리 나라 대부분의 기업들이 겸업을 금지하고 있습니다.
@oilater
@oilater 11 ай бұрын
지금까지 미루다가 드디어 이해했네요,, 감사합니다 ㅎㅎㅎ
@csezsw
@csezsw 9 ай бұрын
시청 감사합니다~
@AlGoYoung
@AlGoYoung 11 ай бұрын
선생님 플로이드 워셜과 벨만 포드도 해주실 수 있을까요? 다익스트라에 대한 거의 모든 영상을 봤는데 이렇게 깔끔한 설명은 처음봤습니다
@csezsw
@csezsw 9 ай бұрын
요근래 영상을 많이 못 올려 죄송합니다. 제가 뭐라 확답을 드리기가 어렵습니다. 이래 저래 좀 바쁘네요.
@AlGoYoung
@AlGoYoung 11 ай бұрын
26:22 증명 시작 😮
@user-bx4go3hr3i
@user-bx4go3hr3i Жыл бұрын
좋은 영상 감사합니다
@윤승환-p4z
@윤승환-p4z Жыл бұрын
선생님, 항상 잘 보다가, 요즘 백트레킹 + dp에 대한 개념이 잘 안 섭니다. 도움을 주실 수 있으실 까요?
@csezsw
@csezsw Жыл бұрын
DP는 Top-down 방식과 Botton-up 방식이 있습니다. 백트래킹을 얘기하시는 것으로 보아, Top-down 방식의 DP와 헷갈려하시는 거 같습니다. Top-down 방식은 재귀 호출에서 동일한 input argument에 대해 중복 계산하지 않고, 그 전에 계산해 두었던 값을 기억(Memoization)하고 있다가 바로 반환하는 방법입니다. 이를 위해서는 당연히 해당 재귀 함수가 항상 동일한 input에 동일한 output이 나오도록 구현해야 합니다. 재귀 호출을 통한 완전 탐색에서 Top-down 방식의 DP를 적용하면 실행시간을 많이 절약하게 됩니다. 백트래킹도 재귀 호출을 통한 완전 탐색에서 탐색을 더 이상 진행하지 않고 반환하는 것은 비슷하지만, Memoization을 사용하지 않습니다. 동일한 input에 대해서 동일한 output을 반환해서 개선하는 것이 아니라, 탐색을 더 진행해 봐야, 절대 해가 될 수 없는 조건이 확인 됐을 때 그냥 반환해서 이전 단계로 돌아가는 것입니다. 즉, 가지치기를 하는 것입니다. 그리고, 당연히 동일한 재귀 함수 안에 Top-down 방식의 DP와 백트래킹 둘 다 적용할 수 있습니다. 아마도 섞여 있는 코드를 보셔서 두 개의 개념이 헷갈렸던 것으로 생각되는데, 제 설명이 도움이 되기를 바라겠습니다.
@귀요밍구
@귀요밍구 Жыл бұрын
안녕하세요. 올려주신 소스코드를 안보고 그림설명만 듣고서 풀어봣습니다. from itertools import combinations def solution(orders, course): answer = [] max_list = [0]*(max(course)+1) temp = [{} for _ in range(max(course)+1)] for i in range(len(orders)): order = sorted(orders[i]) for j in range(2, max(course)+1): combi = list(combinations(order, j)) for k in range(len(combi)): key = ''.join(combi[k]) if key in temp[j]: temp[j][key] += 1 if temp[j][key] > max_list[j]: max_list[j] = temp[j][key] else: temp[j][key] = 1 for i in range(2, max(course)+1): for key in temp[i]: if max_list[i] >= 2 and max_list[i] == temp[i][key]: answer.append(key) answer.sort() return answer 똑같은 방식으로 풀었는대 오답이 나오네요. 풀이방식이 똑같은대 왜 제껀 오답인지.. 원인을 모르겟습니다.
@csezsw
@csezsw Жыл бұрын
아래 answer에 기록하는 부분이 잘못 됐습니다. 아래처럼 course의 max을 기준으로 무조건 2, 3, 4, .., max까지 기록하는데, course에는 중간의 숫자가 없을 수도 있습니다. 그래서 오답이 발생하는 것입니다. for i in range(2, max(course)+1): for key in temp[i]: if max_list[i] >= 2 and max_list[i] == temp[i][key]: answer.append(key) 소스 코드 설명까지 시청해 주세요. 아래와 같이 수정하면 정답 처리 됩니다. for num in course: for key, value in temp[num].items(): if value >=2 and value == max_list[num]: answer.append(key)
@귀요밍구
@귀요밍구 Жыл бұрын
@@csezsw 해결햇습니다 감사합니다
@아자우기
@아자우기 Жыл бұрын
와 .. dfs 구현 하려고 여러 강의를 찾아봤는데 제일 깔끔한 구현인거같습니다 !! 덕분에 잘 공부하고갑니다 감사합니다.
@귀요밍구
@귀요밍구 Жыл бұрын
혹시 for subset in range(1, 1024) 루프를 탈때 tmp를 [0]*11로 다시 초기화해줘야하지않을까요?
@csezsw
@csezsw Жыл бұрын
어짜피 모든 원소를 덮어 쓰기때문에, 굳이 초기화할 필요는 없습니다.
@rambo-g2m
@rambo-g2m Жыл бұрын
너무 감사합니다
@user-lr8ud8xl8w
@user-lr8ud8xl8w Жыл бұрын
이분이 가장 설명을잘하시네 한번보고 바로이해됨 ㅋㅋㅋㅋ
@gang2135
@gang2135 Жыл бұрын
선생님! 2차원 배열에서 2라는 벽은 어떻게 설정하신건가요?
@csezsw
@csezsw Жыл бұрын
별다른 의미가 있는 것은 아니고 임의로 설정한 것입니다. 문제로 출제 된다고 하면, 지문에서 어떤 값이 벽을 나타 내는지 주어질 것입니다.