소개
문과생도 이해하는 알고리즘 강의를 가르치는 강사 개발자로 취직하기입니다 :)
저는 문과생 출신으로 현재는 8년차 대기업 개발자입니다. 처음 코딩을 접하고 코딩 테스트 준비를 하던 막막한 시절을 떠올리며, 어떻게 하면 조금 더 쉽게 설명할 수 있을지, 저 같은 비전공자 문과생도 이해하고 새로운 기술을 습득할 수 있을지 고민하며 강의를 제작하고 있습니다.
유튜브 통해서도 무료 강의 진행하고 있으니 많은 관심 부탁 드립니다!
https://www.youtube.com/@gaebal
강의
전체2수강평
- 너무 좋습니다. 다른 알고리즘 강의도 많이 내주셨으면 좋겠어요.
edwin.dkim
2024.09.13
1
- 잘 들었습니다. 감사합니다.
endeavor
2024.07.02
1
게시글
질문&답변
2024.09.23
Max로 초기화하는 이유
안녕하세요 color.park님 🙂 우선 결론부터 말씀 드리자면 n+1, m+1로 하셔도 됩니다! 이렇게 작성하는 게 더 최적화된 답변일 수 있어서 손에 익으신 다음에는 이렇게 작성하는 것이 더 좋을 것 같습니다. 다만 제가 MAX로 초기화 하는 이유는 1) 코드를 단순하게 작성해서 공부하실 때 수월하시기 위해서와 2) 혹시라도 예상하지 못한 불량을 방지하기 위해서입니다! n+1, m+1로 당연히 될 줄 알지만 꼭 하나씩 더 필요하거나, 예상과 달라지는 경우들이 생기고, 시험장에서 이런 경우가 발생하면 멘탈 관리가 어려워서 떨어지시는 분들이 많더라고요. 나중에 알고보니 그냥 max로 초기화했으면 아무런 문제가 되지 없어서 한번 더 멘탈이 나가곤 하셔서, 메모리를 살짝 낭비하는 대신 문제를 안전하고 빠르게 맞추는 것이 나을 것 같아 이렇게 추천드립니다! 그렇지만 굳이 필요없다고 판단되시면 최적화 하셔도 됩니다 :)
- 1
- 2
- 33
질문&답변
2024.08.20
백준 24479 문제 제출 결과 "틀렸습니다" 라고만 나와서 어떤 부분이 틀렸는지 잘 모르겠어요 피드백 부탁드립니다
AI 인턴보다 한 발 늦었지만 두 가지 수정하면 될 것 같습니다! 엣지 읽기 루프: 엣지를 읽는 루프가 1부터 N + 1 까지 반복되는데, M 개의 엣지를 읽어야 합니다. 현재 구현은 N 이 M 보다 크면 필요한 것보다 더 많은 엣지를 읽을 수 있습니다! 방문 순서 초기화: 방문 순서( visitOrder )가 시작 노드 R 로 초기화됩니다. 방문 순서는 1부터 시작하되, 첫 노드 번호를 R로 초기화 하도록 수정하면 정답이 될 것 같습니다 🙂
- 1
- 3
- 39
질문&답변
2024.08.20
graph 만들때 boolean[][] 으로 만드는 경우랑 int[][] 나 ArrayList<Integer>[] 로 만드는 기준이 어떻게 되나요?
안녕하세요 🙂 답변을 드렸다고 깜빡하고 늦게 댓글 남깁니다 죄송합니다 ㅠ 질문 주신 내용을 두 가지로 나눠보면 자료형을 boolean으로 할지, int로 할지 구분할 기준이 필요하고, 둘째는 이중 배열로 할지, ArrayList를 사용할지 결정할 기준이 필요합니다! boolean vs int: boolean을 사용하는 것이 일반적입니다. 왜냐하면 우리에게 필요한 정보는 두 node 간 연결이 되어있는지 아닌지 알고 싶은 것이라 True/False로 구분만 하면 충분히 정보를 담을 수 있기 때문에 boolean이면 됩니다. 그런데 특정 문제에서는 이를 조금 더 복잡하게 출제해서 '연결되어 있냐/없냐'가 아니라 특정 숫자 값을 넣어서 '해당 칸에서 이동할 때 몇칸씩 이동할지' 등 일반 정보보다 추가되는 정보가 있습니다. 이런 경우는 단순 True/False로 표현할 수 없기 때문에 int로 구분을 해줄 필요가 있습니다. 정리하자면 True/False로만 표현이 가능하면 boolean을 쓰고, 그 외에 추가 정보가 필요하다면 int로 담아줍니다. 그리고 헷갈리신다면 매번 int를 쓰시고, boolean이 필요한 경우에는 0/1로 사용하셔도 됩니다! [][] vs ArrayList: 이 경우는 정말 선택인데, [][]는 메모리 낭비가 심한 대신 성능이 빠르고, ArrayList는 성능은 상대적으로 느리지만 메모리가 훨씬 효율적인 장점이 있습니다. 그래서 Node 개수가 1000개 이하일 때는 [][]를 사용해도 메모리가 넉넉하기 때문에 [][]를 써서 빠른 성능을 낼 수 있고, 1000개를 넘어가면 애초에 [][]를 만들기 어렵기 때문에 ArrayList를 사용해야만 합니다. 이 경우에도 굳이 선택하거나 고민하기 싫으시다면 ArrayList를 매번 쓰셔도 동작에 문제가 없을 거에요!
- 1
- 2
- 61
질문&답변
2024.07.02
graph
네 맞습니다! 방문한 곳을 재방문하지 않도록 방지하는 visited와, 연결 정보를 가진 graph는 거의 매번 필요하다고 생각하시면 됩니다 🙂 MAX를 두는 건 문제의 최대 개수를 관리하기 위해서 정의합니다. 코드를 최대한 공식처럼 사용하실 수 있도록 MAX라는 변수를 두고, MAX 변수를 문제에서 제공하는 N + 10 으로 설정하시면 되도록 정의했습니다! 그래서 원하시다면 이 값은 필수가 아니라 원하는 값으로 바꾸셔도 됩니다.
- 1
- 1
- 82
질문&답변
2024.07.02
재귀 함수 Depth
SJ님 안녕하세요! 🙂 표에서 오른쪽으로 간다는 것은 재귀함수가 새로 호출 됐다는 의미로, 한 단계 더 깊이 들어간 것을 의미하고, 해당 칼럼에서 숫자가 순차적으로 나오는 건, 그 단계(그 함수 호출, 그 재귀 함수) 내에서 여러 숫자들을 방문하는 것을 의미합니다! 그래서 칼럼 2 마지막에 5(무시)를 적은 건, 1번에서 다음 재귀함수를 호출할 때 2번을 호출하고 나서 한바탕 다 검사하고 돌아오면, 아직 N번까지 확인하지 않았기 때문에 나머지를 확인해줘야 하고, 그 중 5번이 있어서 5번을 확인해보지만, 이미 방문했기 때문에 무시하고 넘어간다는 것을 이렇게 표기해봤습니다. 정리하자면, 꼭 제가 제안 드린 방식대로 정리를 할 필요는 없지만, 재귀함수가 다음 재귀함수를 또 호출할 때 어떤 숫자들을 순차적으로 확인하는지, 그리고 그때마다 다시 재귀함수가 호출되는지 아니면 무시되고 다음 숫자를 확인하는지를 완벽하게 이해할 수 있어야 합니다. 그래서 그림이나 표로 정리해보는 걸 추천드립니다!
- 1
- 1
- 77