kokoball의 devlog
article thumbnail
백준 1261 알고스팟 (node.js)
WEB/백준 문제 풀이 2024. 6. 29. 20:53

문제https://www.acmicpc.net/problem/1261  문제 해석이 문제는 지금까지와는 다르게 우선순위가 있는 길 찾기이다.최대한 벽을 부수지 않고 이동해야하기 때문에 queue에 추가할 때 벽이 없는 길을 unshift를 이용해 queue 앞에 추가해 주고벽이 있는 경우에는 기존과 같이 push를 이용해 queue 뒤에 추가하면 된다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");const solution = (input) => { const [n,..

article thumbnail
백준 15723 n단 논법 (node.js)
WEB/백준 문제 풀이 2024. 6. 28. 21:18

문제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..

article thumbnail
백준 11403 경로 찾기 (node.js)
WEB/백준 문제 풀이 2024. 6. 27. 11:02

문제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..

article thumbnail
백준 16987 계란으로 계란치기 (node.js)
WEB/백준 문제 풀이 2024. 6. 24. 13:01

문제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..

article thumbnail
백준 15686 연산자 끼워 넣기 (node.js)
WEB/백준 문제 풀이 2024. 6. 22. 19:15

문제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 ..

article thumbnail
백준 15686 치킨 배달 (node.js)
WEB/백준 문제 풀이 2024. 6. 20. 01:13

문제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..

article thumbnail
백준 9663 N-Queen (node.js)
WEB/백준 문제 풀이 2024. 6. 19. 10:41

문제https://www.acmicpc.net/problem/9663 문제 해석이 문제는 백 트래킹의 대표적인 문제이다.DFS 기반으로 트리를 그리면서 풀 수 있는 문제이며, 밑으로 트리를 생성할 때 조건을 확인하는 식으로 풀면 된다. 여기서 조건은 현재 퀸의 위치를 기준으로 위 아래 대각선을 확인해야 한다. 열의 위치는 v1에 표시를 하며, (i, j)에서 j의 값만을 기록하면 된다.왼쪽 위로 올라가는 대각선의 경우는 i - j 가 일정하기 때문에 v2 [i - j]로 작성하되 - 가 되면 안 되기 때문에 전체길이를 더해준다.오른쪽 위로 올라가는 대각선의 경우 (i, j)의 값이 모두 동일하기 때문에 v3 [i+j] 식으로 기록해 준다. 이후 각 조건에서 L과 N이 동일하면 answer를 더하는 방식으..

article thumbnail
백준 1043 거짓말 (node.js)
WEB/백준 문제 풀이 2024. 6. 17. 23:12

문제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(..

728x90