문제https://www.acmicpc.net/problem/15723 문제 해석이 문제는 다른 그래프 이론과 비슷하다.다만, 순회할 배열을 만들때 알파벳을 그대로 만들 수 없으니, 아스키 코드로 변경 후 풀면 된다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const N = +input.shift(); const premise = input.slice(0, N).map(v => v.split(' ')); co..
문제https://www.acmicpc.net/problem/11403 문제 해석이 문제는 그래프 이론과 비슷한 방법으로 풀면 된다.다만, 정점 i에서 j로 가는 간선임으로 graph 추가 시 양 방향 추가가 아닌 단 방향으로 추가해 주면 된다. 풀이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] = input.shift().split(" ").map(Number); const lines = inpu..
문제https://www.acmicpc.net/problem/16987 문제 해석이 문제는 백트래킹 문제이며, 마지막 계란까지 계산해야 문제를 풀 수 있다.때문에 flag를 설정하며 마지막 로직을 확인하는 과정이 필수이다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const N = input[0].split(" ").map(Number)[0]; const eggs = []; let answer = 0; fo..
13장 - 스코프스코프란?모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라고 한다. 즉 스코프는 식별자가 유효한 범위를 말한다.var var1 = 1;if(true){ var var2 = 2; if(true){ var var3 = 3; }}function foo(){ var var4 = 4; function bar(){ var var5 = 5; }}console.log(var1,var2,var3,var4,var5);// 1,2,3,RefrenceError,RefrenceErrorvar x = 'g';function foo(){ var x = 'l'; consol..
문제https://www.acmicpc.net/problem/14888 문제 해석이 문제 역시 백트래킹 문제이며, input의 3번째 줄인 연산자를 배열로 돌리면서 계산해 나가는 문제이다. 추가적으로 문제에서 나온 음수를 양수로 나눌 때 C++14의 기준을 따르다고 나와있는데, 이는 비트 부정연산자를 이용해 ~~(a / b) 다음과 같이 쉽게 나타낼 수 있다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const ..
문제https://www.acmicpc.net/problem/15686 문제 해석이 문제는 일반적인 백트래킹 문제이며, 처음 배열에서 치킨집과 가정집을 구분하여 풀면 쉽게 풀 수 있다. 풀이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] = input[0].split(" ").map(Number); const board = input.slice(1).map((v) => v.split(" ").map(N..
문제https://www.acmicpc.net/problem/9663 문제 해석이 문제는 백 트래킹의 대표적인 문제이다.DFS 기반으로 트리를 그리면서 풀 수 있는 문제이며, 밑으로 트리를 생성할 때 조건을 확인하는 식으로 풀면 된다. 여기서 조건은 현재 퀸의 위치를 기준으로 위 아래 대각선을 확인해야 한다. 열의 위치는 v1에 표시를 하며, (i, j)에서 j의 값만을 기록하면 된다.왼쪽 위로 올라가는 대각선의 경우는 i - j 가 일정하기 때문에 v2 [i - j]로 작성하되 - 가 되면 안 되기 때문에 전체길이를 더해준다.오른쪽 위로 올라가는 대각선의 경우 (i, j)의 값이 모두 동일하기 때문에 v3 [i+j] 식으로 기록해 준다. 이후 각 조건에서 L과 N이 동일하면 answer를 더하는 방식으..
문제https://www.acmicpc.net/problem/1043 문제 해석이 문제는 일반적인 그래프 연결 문제로 어렵지 않게 풀 수 있는 문제이다.다만 풀이 과정에서 js 메서드를 잘 활용하면 훨씬 적은 양의 코드로 풀 수 있기에 기록해 둔다. 각 라인을 반복할 때 요소 중 하나라도 조건에 맞으면 true를 반환하는 some을 사용하면 더 효율적으로 풀 수 있다. some() - true값 찾기- 리턴값이 하나라도 true 라면 true값 반환- 빈 배열에서 호출하면 false값 반환const array = [1, 2, 3, 4, 5];// checks whether an element is evenconst even = (element) => element % 2 === 0;console.log(..