좋은 강의 감사합니다. 앞으로 코테까지 2주정도 시간이 남아있는데 지금까지 내용을 복습하는게 좋을까요 아니면 복습하면서 남은 강의 중 보는걸 추천할만한 편이 있을까요??
@이홍준-b8gКүн бұрын
매번 좋은 강의 감사합니다! 혹시 코테 강의 끝나면 심화 알고리즘도 강의하실 생각은 없으신가요?
@우기-h3uКүн бұрын
와... 6일전이 왜 지금뜨는거야 안본 눈 삽니다
@gaengedev25832 күн бұрын
유하~ 유파~
@국산소3 күн бұрын
🎉🎉
@조동현-z1n3 күн бұрын
히사시부리~
@cortana45725 күн бұрын
물대기 온갖 방법을 생각했는데 저런 방법이... ㅜㅜ
@choi04245 күн бұрын
대 킹 독 벨만포드는 계획에 없으신가요?
@BaaaaaaaaaaaaaaaaaaaaarkingDog5 күн бұрын
네 벨만포드는 코딩테스트에 나올만한 알고리즘은 아니라고 생각해서 뺐어요
@Ev4n56 күн бұрын
캬~~~~~
@우칸많사6 күн бұрын
G.O.A.T
@kimaisfree6 күн бұрын
안녕하세요 질문이 있어 댓글남깁니다! 1. N과M(2) 20번째 줄에서 이전에 선택한 수의 다음 수(st)부터 순회를 시작해서 중복을 피할 수 있는데, i 사용여부를 기록하는 isused 배열이 따로 필요한 이유가 궁금합니다! 2. 순열 시간복잡도 백트래킹을 사용하여 순열을 구현했을 때의 시간복잡도는 O(N!)이고, next permutation을 사용하여 순열을 구현했을 때의 시간복잡도는 O(N! * N)으로 이해했습니다. 마지막 부분에 순열과 조합 문제는 next permutation 으로 풀이하는 것을 권장해주셨는데 시간복잡도 상으론 백트래킹 방식이 더 빠르게 보여서 next permutation 방식을 권장하신 이유에 대해 질문드립니다!
@BaaaaaaaaaaaaaaaaaaaaarkingDog5 күн бұрын
1. 와.. 제가 큰 실수를 했었네요. 말씀하신게 맞고 isused가 따로 필요가 없습니다. 코드를 수정하려고 하는데, 혹시 원하실 경우 닉네임 알려주시면 수정 후 Co-author에 닉네임 추가하겠습니다. 2. 백트래킹으로 순열을 구할 때의 시간복잡도도 O(N*N!)입니다. 백트래킹 과정에서 다음 값으로 들어갈 수 있는, 아직 안쓰인 수를 찾을 때 i = 1부터 N까지 돌면서 isused를 보는 과정이 있어서 N이 붙습니다. 실제 돌려보지는 않았지만 함수 호출이 무거운 연산이기 때문에 실행시간도 백트래킹쪽이 더 오래 걸릴 것으로 예상됩니다. 추가적으로 사실 실행시간의 차이는 굉장히 미미할 것이라고 생각하지만, next permutation의 사용을 권유드리는 이유는 백트래킹을 직접 짜면 실수할 가능성이 있기 때문입니다.
@kimaisfree4 күн бұрын
@@BaaaaaaaaaaaaaaaaaaaaarkingDog 아하 이해됐습니다 답변해주셔서 감사합니다! 제 깃헙 닉네임은 Kim-AYoung 입니다!
@BaaaaaaaaaaaaaaaaaaaaarkingDog2 күн бұрын
N과 M 2, 6 코드 변경했습니다 알려주셔서 감사합니다~~
@Wiib-j6t6 күн бұрын
❤❤
@richie4357 күн бұрын
캬 믿고 있었습니다
@chickennoir6917 күн бұрын
우왕 신시리즈다
@CodemanGarlic7 күн бұрын
롤드컵 결승보단 유파지 ㅋㅋ
@BaaaaaaaaaaaaaaaaaaaaarkingDog7 күн бұрын
헉 그건 아닐지도
@JAE-sm4dw7 күн бұрын
빠킹독님 저번부터 여쭤보고 기다리고 기다리던 유니온파인드가 나왔군요ㅋㅋㅋ 취준중에 듣다가 회사 다닐때 나오니까 감회가 새롭네요
@lIIIillli-s9d7 күн бұрын
드디어 유파가 나왔군여 !! 이직 준비하며 알고리즘을 취미처럼 공부하고 있는데 잘 보겠습니다 !!
@BaaaaaaaaaaaaaaaaaaaaarkingDog7 күн бұрын
질문 전에 이 글을 반드시 확인해주세요. 질문 가이드를 정확하게 따라간 질문에 대해서만 답변을 드리고 그렇지 않은 질문은 먼저 가이드에 맞게 수정을 요청할 예정입니다. github.com/encrypted-def/basic-algo-lecture/blob/master/docs/how-to-ask.md
@user-uo8hx6fy8r13 күн бұрын
정말 감사합니다... 알고리즘에 겁을 많이 먹었는데 막상 해보니 할만하고 재밌네요👍👍
@민수-s5h18 күн бұрын
자바로 따라가면서 공부 시작하고 있습니다 ! 좋은강의 감사합니다
@김익환-o4m22 күн бұрын
카잉달력(BOJ 6064)에서 13, 14, 17번 줄에서 이해가 안 돼요 그리고 해당 문제에서 말해주신 식이 추가되는 그런 문제가 있을까요?
@BaaaaaaaaaaaaaaaaaaaaarkingDog22 күн бұрын
질문이 잘 이해가 안가서 어떤 부분이 이해가 안가는건지 좀 더 정확히 찝어주세요. "해당 문제에서 말해주신 식이 추가되는 그런 문제" 도 무슨 뜻인지 모르겠어요.
@김익환-o4m22 күн бұрын
@@BaaaaaaaaaaaaaaaaaaaaarkingDog if(x == m) x = 0; 과 if(y == n) y = 0; 처리 이유를 잘 모르겠어요 그리고 카잉 달력의 <x:y> 처럼 식이 2개가 아닌 <x:y:z>와 같은 3개 이상인 식을 해결하는 연립합동방정식 문제가 있을까요? 질문이 너무 모호해서 죄송합니다...
@BaaaaaaaaaaaaaaaaaaaaarkingDog21 күн бұрын
@@김익환-o4m 아하.. x == m이면 x = 0으로 변경하는 이유는, 17번째 줄에서 i가 올바른 해가 맞는지를 확인하기 위해 i%m과 x를 비교하는데 i%m은 0에서 m-1의 값을 가지니 입력으로 주어진 x가 m일 때 그걸 0으로 바꿔 i%m이 0과 비교될 수 있게 했습니다. y == n일 때 y = 0으로 바꾸는 것도 마찬가지 상황입니다. 3개일 때 푸는 문제는 문제집에 있는 BOJ 1476번입니다.
@꾸이꾸이-i5k23 күн бұрын
저 살면서 처음으로 재귀문제 스스로 성공했네요..Z문제 스스로 풀었어요ㅠㅠㅜ 진짜 감격..재귀문제가 제일 벽으로 느껴졌는데 진짜 명강의... 학교에서도 배우면서 아 나는 재귀는 불가능이구나 했는데 절차적 사고를 버리라는게 진짜 도움이 됐어요 감사합니다
@BaaaaaaaaaaaaaaaaaaaaarkingDog22 күн бұрын
깨달으셨군요...💪💪 킵고잉합시다
@lIIIillli-s9d27 күн бұрын
강의 잘 봤습니다! 혹시 파라매트릭서치나, 이전의 문제처럼 mid 를 (st+end+1)/2 로 둬야한다는 것을 눈치채는 포인트가 있을까요 ?
@BaaaaaaaaaaaaaaaaaaaaarkingDog26 күн бұрын
st랑 en이랑 1 차이날 때를 생각하면 무한루프를 도는지 안도는지 판단할 수 있어요
@lIIIillli-s9d26 күн бұрын
@@BaaaaaaaaaaaaaaaaaaaaarkingDog 아하 감사합니다,, 강의를 다시 봐봐야겠네요
@지오-u8dАй бұрын
감시 문제는 풀다가 막혀서 바킹독님 문제 풀이를 끝내 보고 말았는데 2048은 4시간 정도 걸렸지만 그래도 진법으로 잘 풀어냈습니다 ㅠㅠ 감사합니다 선생임
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
고생하셨습니다 !
@yyul7777Ай бұрын
ide 를 전혀 안쓰고하시네요,, 대단합니다 저는 아직 vscode 도움을 받긴하는데 이제 ide안쓰는훈련을 해야할까요?
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
프로그래머스같은 환경에서 코딩테스트를 칠걸 생각하면 ide 없이 연습은 해보는게 좋겠지만 개인적으로 어차피 진짜 코딩할 땐 ide를 쓸텐데 좀 마음에 안든다 하는 생긱이 있긴 하네요
@김현석-f9kАй бұрын
안녕하세요. 강의 잘 보고 있습니다 ! 백준 12100번 - 2048 (Easy) 을 풀다가 맞왜틀에 도달했습니다. 먼저 듣기전 풀이이고 듣고나서 로테이션을 하는 것을 이해했습니다. 듣기 전 풀이가 왜 틀렸는지가 궁금해서 질문드립니다. 채점중 4%에서 틀립니다. 제출문제는 84910428입니다.
@김현석-f9kАй бұрын
질문게시판에서 반례모음을 찾아보니 해결했습니다 !! 질문하는 김에 84911762 번의 소스 코드에서 비효율적인 부분을 지적해주실수 있을까요? 감사합니다.
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
@@김현석-f9k 한줄한줄 꼼꼼히 리뷰를 다 해드리긴 어렵지만 대충 봤을 땐 강의에서 소개한, 한 줄의 처리를 O(n)으로도 할 수 있고 O(n^2)으로도 할 수 있다고 할 때 지금의 코드는 O(n^2)으로 된 것 같은 느낌..? 그리고 상하좌우를 각각 짜는 대신 배열을 돌리는 걸로 처리 할 수 있다는 얘기도 있었고 그 정도가 개선해볼 수 있는 점으로 보여요.
@이상호-j1k9uАй бұрын
안녕하세요? 좋은 강의 만들어주셔서 감사합니다. 다름이 아니라 15683 감시 문제를 풀다가 막혀서 질문드립니다. 테스트케이스 예제 뿐만 아니라 질문게시판의 반례모음들을 입력해도 맞게 나옵니다. 그러나 제출만하면 5%도 안되서 틀렸습니다를 받습니다. 혹시 반례를 찾아주실수 있을까요? 제출번호는 84910383입니다.
@겨자먹은펭귄Ай бұрын
해결했습니다. 감사합니다. cctv타입 3번에서 중복된 내용이 있었습니다.
@윤승재-y5eАй бұрын
안녕하세요! 전역변수에 배열을 초기화 할때 배열 크기를 502, 1002, 등등뒤에 2를 추가한 이유가 무엇인가요?! 예시) int board[1002][1002] = {0,}; 이때 m, n의 범위는 <= 1000 배열크기가 어째서 1000 이아니라 1002로 둔건지 궁금합니다! 항상 감사합니다!
@윤승재-y5eАй бұрын
옛날에 작성한 댓글 끌올합니다 ----- 우리 조상님들이 익은 감을 다 따먹지 먹지 않고 날짐승들을 위해 까치밥을 남겨두듯 가로 세로가 500칸이라고 할 때 board[500][500]으로 선언해도 되지만 빡빡하게 살지 말고 2칸 정도의 여유를 가지자는 의미입니다... 좀 더 직접적으로 말하면 - 딱 맞게 잡아도 상관이 없고 오히려 불필요한 메모리를 사용하지 않는다는 관점에서는 크기를 딱 맞게 잡는게 좋겠지만 - 몇 칸 정도 여유를 둔다고 해서 큰 문제가 생기는건 아니고 혹시 내가 필요한 배열의 크기를 아주 살짝 잘못 생각했더라도 맞을 수 있게 하기 위해서 몇 칸 정도 여유를 두고 선언을 합니다. 저만 이렇게 하는건 아니고 알고리즘을 하는 사람들의 습관 같은거에요 ㅋㅋㅋㅋㅋ이거 방금 다른댓글에서 확인했습니다. 감사합니다!!
@우칸많사Ай бұрын
귀한 영상에 압도적 감사
@송해현Ай бұрын
이제 파이썬으로 하시나요?!
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
간단한건 파이썬으로 짜는걸 선호해요
@chickennoir691Ай бұрын
토스한테 두들겨 맞은 저에게 한 줄기 빛을..
@김태우-m3xАй бұрын
훈련 고생하셨습니다 ㅎㅎㅎ
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
ㅋㅋㅋㅋㅋ 감사합니당
@kkorinimАй бұрын
머임 진짜오랜만이네요
@CodemanGarlicАй бұрын
젠장 이 스트리밍을 놓치다니… 강의 기다리고 있겠습니다 늘 감사해요!
@qwerty-d2u4eАй бұрын
나야, 빠킹독
@오수현-b9fАй бұрын
헤헤 타일링 문제 바로 피보나치 인거 알아내버렸당 이 맛에 공부하는 거지~
@양희찬-u5tАй бұрын
감사합니다.
@김익환-o4mАй бұрын
BOJ 5648 _역원소 정렬에서 입력 부분이 이해가 안 돼요.. string 공백 뒷부분 없어지고 결국 앞에 있는 문자만 reverse하고 벡터에 들어가는 거 아닌가요?
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
"string 공백 뒷부분"이 무엇을 말하는지 질문이 잘 이해가 안가요
@김익환-o4mАй бұрын
@@BaaaaaaaaaaaaaaaaaaaaarkingDog string에 공백을 포함하여 입력하면 공백 뒷부분은 없어지지 않나요?
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
@@김익환-o4m 없어지는게 아니라 공백 전까지만 입력받습니다. 그 뒤의 내용들은 stdin에 계속 남아있습니다.
@최현철-j1hАй бұрын
안녕하세요! 강의 듣던 중 1697 숨바꼭질 해설을 듣는데 궁금한 점이 생겨 질문드립니다! 해답 코드에선 BFS while문의 탈출 조건을 ” dis[k]에 값이 쓰여질 때“로 설정하셨는데요. 제가 이해한 바로는 큐 상에는 거리가 가까운 노드 순으로 들어오기 때문에 while문 내부에서 ntx좌표가 == k와 동일하면 가장 빨리 k좌표에 도달한 것이라 생각해서 종료조건을 if(ntx == k) 로 주었습니다! 근데 제출을 해보면 해당 코드는 틀렸다고 나옵니다. 다른 코드는 모두 동일하며 해당 조건만 바꾸었더니 틀렸다니.. 어떤 논리적 오류가 발생하는지 잘 이해가 안가서 질문드립니다 !! 답변 주시면 감사하겠습니다.. 항상 좋은 콘텐츠 잘 보고 있습니다. 감사합니다!
@최현철-j1hАй бұрын
아래는 제가 수정한 부분의 코드만 첨부해드립니다 !! while(!Q.empty()) { int cur = Q.front(); Q.pop(); for(int nx : {cur +1, cur -1, cur * 2}) { if(nx < 0 || nx > 200001) continue; if(dis[nx] != -1 ) continue; Q.push(nx); dis[nx] = dis[cur] + 1; if(nx == k) { cout << dis[nx]; return 0; } } }
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
안녕하세요, 제가 상단에 고정해놓은 질문 가이드 먼저 확인 부탁드릴게요
@김익환-o4mАй бұрын
시뮬레이션 대회에서 자주 등장하나요? icpc를 준비하고 있습니다. 이외에 대회에 자주 출몰하는 알고리즘이나 딱히 안 나오는 알고리즘이 먼지 궁금합니다!! 항상 영상 잘 보고 있습니다!
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
아 슬슬 icpc 시즌이군요..ㅎㅎ 구현 좀 빡세게 들어가는 문제 한 두개씩은 있었던 것 같고, 또 icpc면 시뮬레이션 단원에서 요구하는 정도의 구현력은 필수에요
@오수현-b9fАй бұрын
마지막에 그럼 빠이요 너무 귀여워요
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
ㅋㅋㅋ감삼다 !
@김익환-o4mАй бұрын
1941 소문난 칠공주 시간복잡도 어떻게 계산된 건가요?
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
25 combination 7을 다 해본다고 생각하면 O(25 combination 7) 겠거니 하고 알 수 있어요
@choi0424Ай бұрын
저도 언젠가 취뽀하면 기타 배우고싶네요
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
락윌네버다이입니다
@오수현-b9fАй бұрын
사랑합니다
@오수현-b9fАй бұрын
양질의 영상 너무 좋아요
@wo9bbbdjjАй бұрын
😮
@oilaterАй бұрын
안녕하세요 영상 잘 보고 있습니다! void insert(int idx, int num, int arr[], int& len){ len += 1; int *newArr = new int[len]; for (int i = 0; i < len; i++) { if (idx != i) { newArr[i] = arr[i]; } else { newArr[i] = num; } } arr = newArr; // for (int i = len; i > idx; i--) // { // arr[i] = arr[i - 1]; // } // arr[idx] = num; // len++; } 저는 저렇게 구현했고, 아래가 바킹독님의 답인데, 제가 구현한 건 newArr에는 찍히는데 main에 반영이 안되네요 ㅠ 왜그럴까요? 그리고 바킹독님의 답에서 arr[idx] = num;에서 idx가 len의 길이보다 클 경우 런타임 에러가 나지 않나요? 프로그램에서는 잘 출력되어서 궁금합니다 ㅠ
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
1. 포인터에 대해 정확하게 이해를 하고 계셔야 코드가 왜 올바르게 동작하지 않는지를 알 수 있는데, 원래 배열이 1000번지고 insert 함수에서 new로 새롭게 할당받은 주소가 2000번지라고 합시다. 코드에 따르면 2000번지에 값을 채워넣고 자료형이 int*인 arr에 2000을 대입하는데, 그렇다고 해서 원래 배열인 1000번지의 값이 바뀌지 않기 때문에 printArr로 1000번지의 값을 출력시키게 하면 달라지는게 없는 것 처럼 보입니다. 알고리즘 강의을 따라갈 때 포인터와 같은 개념을 잘 숙지하고 있는건 그렇게 중요한게 아니기 때문에 헷갈리면 그냥 정답 코드의 로직만 이해하고 가시면 됩니다. 2. idx가 len의 길이보다 클 경우 원래 배열에게 할당된 공간을 침범합니다. 당연히 이러한 상황은 피해야 하지만 이러한 상황이 생긴다고 해서 무조건 런타임 에러가 발생하는건 아닙니다.
@버밀리언2 ай бұрын
안녕하세요 ! 좋은 강의 감사합니다. 8:56 OOB 함수에 대해 궁금한 점이 있습니다. 함수 호출은 무거운 작업이라고 들었는데, BFS나 백트래킹 등 완전 탐색을 할 때 OOB 함수로 따로 빼서 처리한다면 호출이 엄청 많아질 것 같다고 생각합니다. if 조건문에 직접 넣는 것과 OOB 함수로 빼서 처리 하는 게 유의미한 시간 차이가 있을까요?
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
원칙적으로 조건문으로 직접 넣는게 시간 상으로 유리하긴 할텐데, 코드는 OOB를 별도로 함수로 작성했지만 컴파일러가 해당 부분을 굳이 함수 호출로 넘기지 않아버린다거나 하는 식으로 최적화가 일어날 수 있어서 정확히 n배 더 빨라진다 이렇게 단언할 수는 없습니다.
@버밀리언Ай бұрын
@@BaaaaaaaaaaaaaaaaaaaaarkingDog 아하 답변 감사합니다 !
@NoRaengs992 ай бұрын
안녕하세요 ㅠㅠ 댓글 봐도 이해 안가는 점이 있어 질문드립니다. 4179 불! 문제에서 만약 지훈이와 불을 동시에 진행 시키는 풀이를 한다면,둘이 같은 시간에 같은 위치에 도달하면 지훈이가 죽으니 불이 지훈이보다 먼저 이동하여야 한다(불을 큐에 먼저 넣어야한다)는건 이해가 갔습니다. 그런데 혹시 같은 시간 안에서 지훈이를 먼저 이동시키고 그 다음에 불을 이동시키는데,만약 불이 이동하려는 자리에 지훈이가 있으면(J표시가 되어있으면) 해당 자리를 F로 바꾸어버리는 풀이는 안되는 걸까요? (지훈이가 먼저 가고 지훈이 위치에 불이 와서 지훈이를 먹어버리는 식으로요.) 해당 풀이를 제출해보니 50% 즈음에서 오답이 나오네요 ㅠㅠ 이유를 모르겠어서 질문드립니다
@BaaaaaaaaaaaaaaaaaaaaarkingDogАй бұрын
코드를 주시면 더 정확한 답변이 가능할텐데, 그 전에 J 표시를 했다가 F로 덮이는 곳이 지훈이의 큐에 계속 들어가 다음 bfs에서 전파가 된다거나 하는 이유가 있을 수 있겠네요
@Lsapee2 ай бұрын
재귀… 얘만 푸는 방법이 너무 어렵네요. 분명 빽트레킹/dfs할때는 그나마 사용되는데 그냥 재귀Z나 별찍기 같은 문제는… 그래도 또 보고 이해하려하겠습니다.