문제https://www.acmicpc.net/problem/17140 풀이이 문제는 중복된 요소의 갯수를 측정해 이용하는 문제이다.Map객체를 이용해 시간복잡도를 최적화 해주는 로직이 핵심이라 생각한다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number));const [r, c, k] = input.shift();const arr = input;let cnt = 0;let temp = Array.from({ length: 10..
백준
문제https://www.acmicpc.net/problem/15685 풀이이 문제를 풀며 햇갈렸던 부분을 정리하겠다. 1. x와 y의 범위가 0부터 100 까지 이므로 생성해야할 2차원 배열을 101 X 101의 크기로 만들어야 한다.2. 드래곤 커브는 끝지점을 기준으로 기존의 모양을 반시계로 돌린 모습이다.그 과정에서 각 지점의 좌표를 구하는 것이 많이 어려웠다.회전되는 새로운 점의 좌표는아래의 식과 같다.const nY = prevX - curX + curY;const nX = -(prevY - curY) + curX; 문제를 풀다보니 "반대인 오른쪽, 반시계방향으로 회전하면 어떤 식이 나올까?" 라는 생각이 들었다.그래서 구해봤다.const nY = prevX - curX + curX; cons..
문제https://www.acmicpc.net/problem/15684 풀이해당 문제는 dfs를 이용해 풀이했으며 문제의 조건을 구현하는데 조금 어려움이 있었다. 검증하고 있는 칸에 사다리를 놓을 수 있는지 검증하는 로직에서 이중으로 쓸대없이 검증을 진행했어서 시간초과 에러가 발생했었다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number));const [n, m, h] = input.shift();const ladder = in..
문제https://www.acmicpc.net/problem/17144 풀이이 문제는 배열 돌리기 문제들을 풀었다면 쉽게 풀이가 가능한 문제다. 나는 먼지가 확산되는 동작을 구현함에 있어 큐에 먼지들의 위치와 값을 담은 다음 차례대로 확상해 나갔다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number));const [n, m, t] = input.shift();const map = input;const filterPos = [];..
문제https://www.acmicpc.net/problem/16235 풀이이 문제는 구현 난이도는 그저 그랬으나 시간 복잡도를 신경써야 하는 문제였다. 기존 코드에서는 죽은 나무들을 담는 큐를 만들어 계산했지만, 이런 방식으로 풀이하면 시간 초과가 발생하므로 기존 나무를 담는 배열에 각 나무의 죽음 여부를 나타내는 값을 하나 추가하고 이를 활용해 풀이했다.추가적으로 내가 실수하며 풀이 시간이 40분 정도 증가했는데, 문제에서 입력으로 들어오는 X, Y 개념을 잘못 이해했다. 나는 좌표평면에서 세로를 Y, 가로를 X로 생각했다. 하지만 문제에서는 상단에서 떨어진 정도를 X, 맨 좌측에서 떨어진 정도를 Y로 표기했다. 이를 반대로 사용해 각 땅에 줘야하는 양분을 잘못 전달했었다. 코드const input..
문제https://www.acmicpc.net/problem/14891 풀이문제는 시뮬레이션 구현 문제이다. 문제 풀이는 돌아가는 톱니바퀴의 좌/우에 있는 톱니바퀴들의 회전후 동작을 구현하는데 중점을 두었다. 회전 동작을 담당하는 함수에서 좌/우에 있는 톱니바퀴들을 회전할 수 있는지 확인하며 회전시키는데, 이때 톱니바퀴는 서로 반대 방향으로 회전하므로 다음 톱니바퀴가 어느 방향으로 회전했는지를 변수에 기록해 그 다음 톱니바퀴가 회전할 방향을 계산할 수 있도록 프로그래밍 했다. 이 문제에서 가장 어려웠던 부분은 로직 구현이 아니였다......오타 때문에 30분 이상 사용한거같다.....length배열의 길이를 측정할 때 length가 아닌 lenght라 작성한 것이다... 오타를 조심하자...........