Knowledge
-
최단 경로 찾기 알고리즘 (다익스트라 / 플로이드 워셜) (python)Knowledge/Algorithm 2023. 7. 5. 15:38
최단 경로를 찾는 알고리즘 중 대표적인 두가지로는 다익스트라 알고리즘과 플로이드 워셜 알고리즘이 있습니다. 다익스트라 알고리즘 - 개념 다익스트라 알고리즘은 출발 노드에서 특정 노드로 가는 최단 경로를 구할 때 사용할 수 있는 알고리즘입니다. 출발 노드부터 시작해 그 노드에서 갈 수 있는 모든 방문하지 않은 노드를 방문 비용이 낮은 것 부터 확인하며 최단 거리 테이블을 갱신해 나가는 방식으로 최단 경로를 구해 나가며, 방문 비용이 낮은 것을 확인하기 위해 heap을 사용하는 것이 특징입니다. 다익스트라 알고리즘의 시간 복잡도는 최대 간선의 개수를 E, 노드의 개수를 V 라고 했을 때 O(ElogV) 입니다. - 구현 다익스트라 알고리즘 구현은 대표적인 유형인 백준 최소비용 구하기 문제를 예시로 풀며 진행..
-
로컬에서 CORS policy 관련 에러가 발생하는 이유Knowledge/Web 2023. 7. 4. 14:33
🚀 발단 위와 같은 html 파일을 로컬환경에서 크롬 브라우져로 실행시켰더니 Access to script at 'file:///C:/경로/js/module.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. 이와 같은 에러 메세지가 발생하였습니다. 🛫 해결방안 비슷한 에러를 몇 번 겪어 봤기에 해결은 금방 했습니다. visual studio code 기준으로 설명해 보자면 방법은 아래와 같습니다. 먼저 터미널을 엽니다. http-server가 없다면 npm inst..
-
<script> 태그는 어디에 위치해야 할까요?Knowledge/HTML & CSS 2023. 7. 4. 11:25
위와 같이 asnyc 속성이 더해진 script 태그가 HTML 태그 사이에 있는 경우 아래 그림과 같이 작동합니다. 보시다시피 script 태그를 만나도 html parsing이 중단되지 않습니다. script 로드와 html parsing이 함께 이루어지다가 script 로드가 끝나면 script가 실행되는 시점에 html parsing이 잠시 중단되고 실행이 끝나면 html parsing이 재개됩니다. defer 위와 같이 defer 속성이 더해진 script 태그가 HTML 태그 사이에 있는 경우 아래 그림과 같이 작동합니다. 보시다시피 script 태그를 만나도 script 로드의 시작부터 끝까지 html parsing이 중단되지 않으며 html parsing이 끝나고 난 뒤에야 script가 ..
-
개발자 도구의 console에서 javascript를 사용할 수 있는 이유Knowledge/javascript 2023. 7. 4. 11:08
왜 되지? 위 스크린샷처럼 개발자 도구의 콘솔 탭을 열고 javascript 코드를 작성하면 잘 작동하는 모습을 볼 수 있습니다. 모든 프로그래밍 언어가 그렇듯 javascript도 실행되려면 프로그래머가 작성한 javascript 코드를 기계가 해석할 수 있게 만드는 과정을 거쳐야 할텐데 브라우저에서 이게 왜 바로 실행되는걸까요? javascript 엔진 정답부터 말씀드리자면 브라우저에 javscript 엔진이 내장되어 있기 때문입니다. 파싱과 JIT 컴파일이 가능한 머신을 제공하는 javascript 엔진은 여러 종류가 있는데 각 브라우저에 내장되어 있는 javascript 엔진의 목록은 아래와 같습니다. Chrome - Google v8 넷스케이프 - Spider Monkey Edge - Chakr..
-
탐색 알고리즘 DFS (깊이 우선 탐색) 와 BFS (너비 우선 탐색) (python)Knowledge/Algorithm 2023. 6. 27. 10:53
- 개념 DFS (깊이 우선 탐색) 와 BFS(너비 우선 탐색) 는 대표적인 탐색 알고리즘입니다. 동작하는 방식은 이름 그대로입니다. 위와 같이 그래프 형태로 데이터를 정렬했을 때 깊이 탐색을 우선하는 게 DFS, 너비 탐색을 우선하는 게 BFS입니다. 탐색 방향과 그로 인해 사용하는 자료 구조가 조금 다를 뿐 모든 노드를 다 탐색한다는 것은 같기 때문에 DFS로 풀리는 문제는 보통 BFS로도 풀립니다. 그 말인 즉 둘 중 하나만 제대로 알고 있어도 탐색 문제는 대부분 해결 가능하다는 말이지만 공부하는 단계에선 두 개념을 정확히 이해하고 구현도 모두 익히길 권장드립니다. - 구현 백준에 올라온 문제 중 'DFS와 BFS' 라는 기초 문제가 있어 이를 토대로 구현해보겠습니다. https://www.acmi..
-
Poetry 설치했으나 경로 찾을 수 없을 때 (poetry installed but command not found) (Windows 10 / mac)Knowledge/Python 2023. 1. 24. 21:23
발단 [풀스택] 에어비앤비 클론코딩 – 노마드 코더 Nomad Coders 에어비앤비 백엔드 + 프런트엔드 + 배포 nomadcoders.co Nomad Coders의 에어비앤비 클론 코딩 수강을 시작했습니다. 그 중 초반에 해당하는 1.1 강에서 파이썬 패키지 관리툴인 poetry를 설치하고 실행하는 부분이 있는데 Introduction | Documentation | Poetry - Python dependency management and packaging made easy If you installed using the deprecated get-poetry.py script, you should remove the path it uses manually, e.g. rm -rf "${POETRY_..
-
Cannot use import statement outside a module 에러 해결Knowledge/javascript 2022. 1. 6. 15:48
발생한 문제 기존에 index.js에 쭉 작성했던, 잘 동작하던 코드를 다른 js파일로 옮겨서 module로 import 해 사용하도록 했습니다. 글로 쓰니까 뭔가 장황한데 그냥 이 지경이었던 index.js 파일을 이렇게 정리했다는 얘기입니다. 그런데 그 후 start를 했더니 Cannot use import statement outside a module 위와 같은 에러메시지와 함께 에러가 발생했습니다. 해결 검색해보니 해결 방법은 간단했습니다. package.json 파일에 위와 같이 "type": "module" 부분을 추가하고 실행하니 이전과 같이 잘 실행되었습니다. 원인 결론부터 말하자면 require를 사용하는 commonjs 방식에서 import를 사용하려 했기 때문에 발생한 에러였습니다...
-
map을 사용했는데 의도하지 않은 쉼표가 출력된다면?Knowledge/javascript 2022. 1. 6. 13:37
발생한 문제 redux를 공부하던 중 의도하지 않은 상황이 발생했습니다 1 2 3 4 5 6 7 8 9 10 var state = store.getState(); document.querySelector('#toc').innerHTML = ` ${state.content.map(item => ( `${item.title}` ) )} 위와 같이 store에서 state를 가져온 다음 그 내부의 content 배열을 map함수를 활용해 순회하며 각 item의 id와 title을 template literals을 활용해 작성해 둔 html 태그와 결합, 출력하는 코드를 작성했는데 이처럼 의도하지 않은 쉼표 (,) 도 함께 출력되었습니다. 원인 검색해보니 map 함수가 문자열 형태로 값을 리턴할 때는 (temp..