문제https://www.acmicpc.net/problem/12904문제 해석처음엔 재귀 방식으로 가볍게 도전했다가 처참하게 깨졌다...S의 길이가 999, T의 길이가 1000이기 때문에 재귀는 시간 초과가 발생한다. 해결 방법은 최대 길이가 T이기 때문에 T에서 하나씩 제거하며 결국 S와 길이가 같아졌을 때 비교하면 해결할 수 있다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) {let a = input[0].trim(..
문제https://www.acmicpc.net/problem/17413 문제 해석이 문제는 아래 첫 풀이처럼 문제의 모든 조건을 하나씩 구현한 다음 해결해도 되지만, 정규식으로 쉽게 해결할 수도 있다. (정규식을 배우자..) 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const arr = input[0].split(""); let tempArr = ""; let answer = ""; for (let i = 0;..
문제https://www.acmicpc.net/problem/14502 문제 해석이 문제는 완전 탐색인 줄 알고 모든 경우를 가정하여 반복문을 돌렸지만 실패했다.다른 방법을 찾던 도중 BFS를 이용한 방법에 힌트를 얻어 해결할 수 있었다. 여기서 포인트는 반복문을 돌릴 때 모든 경우(배열 전체 크기)가 아니라 벽을 놓을 위치인 빈 공간을 기준으로 반복문을 실행해야 하고,그 후 BFS를 통해 바이러스의 배열을 queue 형태로 두고 총개수를 확인하면 풀 수 있다.풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs") .readFileSync(filePath) .toStr..
문제https://www.acmicpc.net/problem/3190 문제 해석이 문제도 전체 배열에 뱀이 지나가는 부분과 뱀 길이, 그리고 각각의 방향을 신경 쓰면 풀 수 있는 문제이다. 문제의 조건에 따라 N, K, L 정수를 구한다음 전체 배열을 생성하고 사과가 있는 위치의 값을 1로 바꿔준다.그 후 무한 반복문을 통해 각각의 조건에 맞춰서 이동하면 된다.풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const N ..
문제https://www.acmicpc.net/problem/11536 문제 해석이 문제는 간단한 구현 문제이며, set 배열을 통해 중복을 방지하고 만약 크기가 1 이상일 겨우 NEITHER을 아닐 경우 각각의 값을 리턴하여 해결하였다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const N = Number(input.shift()); let index = input[0].charCodeAt(0); let t..
문제https://www.acmicpc.net/problem/14503 문제 해석이 문제는 구현 문제이며, 방문 체크를 위한 배열 visited와 각각의 방향 체크를 위한 dx, dy로 분리해서 해결하였다. 문제의 요구사항대로 먼저 현재 위치 청소 여부를 확인하고 청소했으면 -1로 값을 변경한 후 각각의 방향을 검사하여 기계의 진행을 설정해 주었다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const [n, m] ..
문제https://www.acmicpc.net/problem/7568 문제 해석이 문제는 전체 탐색인 브루트 포스 (brute force) 관련 문제이다.브루트 포스 방법은 해가 존재할 것으로 예상되는 모든 영역을 전체 탐색하는 방법이다. (순차 탐색, 깊이 우선 탐색 DFS, 너비 우선 탐색 BFS) (자세한 설명) 따라서 중첩 반복문을 이용해 현재 몸무게와 키를 비교해 있다면 인덱스를 1 씩 더해주면 된다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";let input = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n")..
문제https://www.acmicpc.net/problem/2578 문제 해석이 문제는 이중 반복문을 통해 각 원소가 체크 됐는지 확인하고, 그 순간에 빙고를 확인하면 되는 문제이다.가로 세로와 대각선 빙고 상황을 구분해서 확인하는 함수를 만들어 해결하였다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { let board = []; let visited = Array.from({ length: 5 }, () => A..