
문제: https://www.acmicpc.net/problem/16235문제 풀이나무 위치와 나이를 별도로 저장하지 않고, 주어지는 배열을 그대로 사용하자. trees[x, y ,z] 나이가 어린 나무부터 양분을 섭취하므로, trees 배열을 나이를 기준으로 오름차순 정렬한다.반복문을 통해 K번 봄, 여름, 가을, 겨울을 거친다.죽은 나무 deadTrees, 살아있는 나무 aliveTrees로 배열을 생성하여 한 해를 보낸다.trees 배열을 비우고, 가을에 새로 번식한 나무와 함께 살아있는 나무 aliveTrees를 trees 배열에 저장한다.(이때, 번식한 나무의 나이가 1이고 aliveTrees는 이미 오름차순 정렬되어 있으므로, 다시 정렬할 필요가 없다)전체 코드const fs = require..

문제https://www.acmicpc.net/problem/15686문제 풀이n, m의 크기가 작으므로, 완전 탐색 가능집과 치킨집만 확인하면 되므로, 그래프를 순회하며 집과 치킨집 좌표를 별도의 배열에 저장해둔다.백트래킹으로 치킨집을 M개 선택하는 모든 경우를 구한다. 선택한 치킨집은 별도의 배열에 저장한다.치킨집 M개를 모두 선택했을 때, 선택한 치킨집을 기반으로 각 집마다 치킨 거리를 계산하고, 도시의 치킨 거리를 구한다.const fs = require("fs");const [[n, m], ...graph] = fs.readFileSync("/dev/stdin").toString().trim().split("\n") .map(line => line.split(" ").map(Number))..

문제문제는 여기에서 확인문제풀이N, M의 크기가 크지 않고 모든 방향을 탐색해야 하므로 완전 탐색을 사용한다. 청소 가능한 방향을 우선으로 깊이 탐색하므로 DFS를 사용했다. 1.청소한 곳을 방문 처리할 visited 배열을 생성한다.2. 문제에 적힌 대로 북동남서(0, 1, 2, 3) 방향 배열을 생성한다.// 북, 동, 남, 서const dr = [-1, 0, 1, 0];const dc = [0, 1, 0, -1];3. 현재 위치를 방문처리 하고 DFS를 수행한다.POINT반시계 방향으로 회전하므로 방향은 +1이 아닌 +3으로 계산해야 한다.네 방향 모두 청소하여 후진할 때는 방향을 유지한 채로 이동한다.전체 코드const fs = require("fs");const [[n, m], [r, c, d]..

14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 다른 분들이 훨씬 더 간단하게 푼 것 같습니다. 양쪽 벽 중 짧은 쪽을 선택하여 세로로 빗물 양을 세는 방식이더라고요. 저는 가로로 세는 방식으로 풀었는데, 코드가 좀 복잡하지만 여기에 남깁니다. POINT 블록 좌표를 따로 저장하여 왼쪽 아래 블록부터 오른쪽 위 블록 순서대로 검사한다. 각 블록에서 출발하여 오른쪽 방향으로 검사하며 빗물 양을 카운트한다. 검사하다가 다른 블록을 만나면, 이제까지 센 빗물 양(count)을 answer 변수에 저..

18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net POINT 조합 Combinations 빈 좌표 배열에서 3개를 뽑는 조합을 사용하여, 장애물을 세운다. DFS 장애물을 세운 후, 선생님을 상하좌우로 한 칸씩 계속 이동시킨다. 장애물을 만나거나 벽에 다다르면, 다른 방향 감시하기 학생을 만나면, 감시를 종료하고 결과("NO") 출력하기 문제풀이 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().s..

14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net POINT DFS 주어진 연산자를 순열 알고리즘을 사용해서 풀었으나, 중복된 연산이 많고 비효율적이라 메모리 초과가 발생한다. → 한 연산에서 시작하여 나머지 연산을 수행하는 모든 경우를 구하기 위해 DFS를 사용한다. -0 JS에서는 -0이 출력이 된다. 백준에서 -0은 0이 아니므로 오답이다. 결과가 -0이면 0으로 바꿔주자. 문제풀이 const fs = require("fs"); const input =..
- Total
- Today
- Yesterday
- nodeJS
- 파이썬
- Unsplash
- flutter
- 프로그래머스
- dfs
- fetch
- 알고리즘
- Python3
- React
- 이벤트루프
- javascript
- 백준
- Spotify
- 코딩테스트
- python
- 코테
- p5js
- DP
- 비동기
- backtracking
- React.js
- node.js
- 코어자바스크립트
- 문제풀이
- 다이나믹프로그래밍
- React-native
- rn
- 코드분석
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |