전체 글
[백준] 7576번 토마토 - JavaScript(NodeJS)
문제 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 토마토가 익기 위한 조건은 인접한 익은 토마토가 있고 하루가 지났을 때이다. 처음에 상자에서 익은 토마토들의 좌표를 파악해야 한다. 익은 토마토들의 좌표를 기준으로 하루마다 동서남북으로 전염(?)된다고 생각하자. 모든 행렬의 좌표를 조회할 필요는 없다. BFS를 사용해보자. 중요한 점은 하루마다 전날 추가된 익은 토마토들의 주변을 모두 탐색해야 한다. 전날에 익은 토마토가 3개가 있다면, 그 3개의 주변을 모두 탐색한다. 탈출 조건으로..
![[백준] 2178번 미로 -JavaScript(NodeJS)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbV73G3%2Fbtq51QdCH7n%2FAAAAAAAAAAAAAAAAAAAAAPhEuX1c0mMGr0uzcf11aEWF3du3signsGZ943SyiYO8%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DG1kUuvy86V4C10ZTZUa6qyzyaFM%253D)
[백준] 2178번 미로 -JavaScript(NodeJS)
문제 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 사실 문제를 처음 보고서는, BFS 구현에 익숙하지 않아서 모든 방법을 조회해보고 최솟값을 뽑아내도 괜찮겠다는 생각으로 우선 DFS로 접근했다. 하지만 결국 시간초과 이슈로, BFS로 해결했다. 이 문제는 최단경로 문제에 해당하는데, BFS는 너비 우선 탐색으로, 특정 지점에 가장 빨리 도착한 경우를 구하기에 적절하다. BFS는 while문과 queue 자료구조를 사용하여 구현할 수 있다. 자바스크립트에서 queue 자료구조의 구현은 배열과 push, shift 메서드를 사용하면 된..
![[백준] 13023번 ABCDE - JavaScript(NodeJS)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fevlca2%2Fbtq5NHWLnap%2FAAAAAAAAAAAAAAAAAAAAAGU9nDIr5x-3RZmQ5yYqFCMuTB8IgbXJpMkINr9pZv3v%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D1kaMLy1qxPwbRrz%252F9rOn7A2UuRo%253D)
[백준] 13023번 ABCDE - JavaScript(NodeJS)
문제 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 풀이 상당히 고생했던 문제이다. 이 문제는, A와 B가 친구, B와 C가 친구, C와 D가 친구, D와 E가 친구인 경우가 존재하는지 구하면 된다. 그림과 같이 특정 노드에서 시작해서, 중복되지 않는 노드로 4번 이동할 수 있다면 (총 5개의 노드를 방문하면) 된다. DFS를 이용할 것이며, 그래프의 연결관계 표현을 위해 인접행렬을 이용하자. 변수 소개 각 변수들은 아래에 작성한 코드를 참고하자. N, M : 문제의 조건인 사람의 수(N), 관계의 수(M) adjM : N * N 인접행렬 check : 방문한 노드를 재방문하지 않기 위한 배열. 방문시 1, 미방문..
![[자바스크립트] let, const 키워드를 사용하자.](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F5rIfU%2Fbtq5pX0brjc%2FAAAAAAAAAAAAAAAAAAAAAERjxIhMMqoaXzApkzHm-0LArVz7jgcd3dVjovpagcp2%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Doc%252FVnIu85FkQMZA6pyEx0BjlEaQ%253D)
[자바스크립트] let, const 키워드를 사용하자.
이전 글 [자바스크립트] var 키워드를 사용하지 말아야 하는 이유 자바스크립트에서 변수를 선언하는 방법으로는 var, const, let 3가지 키워드가 있다. 사실 EcmaScript5 전까지는 var 키워드만 존재했으며 이후로 const, let이 추가된 것이다. 이 var 키워드는 독특한 특징 gobae.tistory.com var 키워드의 단점을 보완하기 위해 등장한 const, let 키워드는 어떤 특성을 가지는지 알아보자. let 키워드 1. 동일한 식별자를 중복 선언할 수 없다. var a = 1; let a = 1; // 'a' has already been declared. var 키워드와 달리, let 키워드는 동일한 식별자 변수를 중복 선언하면 에러가 발생한다. 2. 블록 레벨 스코..
![[자바스크립트] var 키워드를 사용하지 말아야 하는 이유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbjkd7G%2Fbtq5qWrjdQA%2FAAAAAAAAAAAAAAAAAAAAALL5S_hVEENya2cFXRBPftmiex_Cs3MvxO145axBq6tK%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DkliYdoIHkLXoPaEiCLEqRYuJSnk%253D)
[자바스크립트] var 키워드를 사용하지 말아야 하는 이유
자바스크립트에서 변수를 선언하는 방법으로는 var, const, let 3가지 키워드가 있다. 사실 EcmaScript5 전까지는 var 키워드만 존재했으며 이후로 const, let이 추가된 것이다. 이 var 키워드는 독특한 특징들이 있어 사용에 주의해야 한다. var 키워드를 왜 사용하면 안될까? 1. 동일한 식별자를 중복 선언할 수 있다. var a = 1; var b = 1; ... var a = 100; console.log(a, b); // 100 1 위 코드와 같이 동일한 이름의 변수를 선언해도 에러가 발생하지 않는다. 의도치 않게 이미 선언했던 중요한 변수 값이 변경되어 심각한 문제를 일으킬 수 있다. 2. 함수 레벨의 스코프를 가진다. 변수는 항상 스코프를 가지는데, var 키워드로 선..
[자바스크립트] 렉시컬 스코프
스코프와 스코프 체인 스코프란, 식별자의 유효 범위를 말한다. 스코프 체인이란, 이 식별자의 유효 범위를 뜻하는 스코프가 계층적으로 연결된 것을 의미한다. 함수에서 스코프를 결정하는 방식으로는 동적 스코프와 정적 스코프 방식이 있다. 동적 스코프와 정적 스코프의 차이는 var x = 1; function fun1(){ var x = 2; fun2(); } function fun2(){ console.log(x); } fun1(); // 결과1 = ? fun2(); // 결과2 = ? 에서 결과1, 결과2가 어떤 형태일 지 예측해보면 된다. (1) 2 1 출력 (2) 1 1 출력 2가지 경우로 예측할 수 있을 것이다. 실제로 이 스코프에 대해 공부하게 된 계기도 이 코드와 유사한데, 알고리즘 문제를 풀면서..