kokoball의 devlog
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(..

article thumbnail
백준 1922 네트워크 연결 (node.js)
WEB/백준 문제 풀이 2024. 6. 17. 12:38

문제https://www.acmicpc.net/problem/11724 문제 해석이 문제는 크루스칼 알고리즘을 활용해 MST(최소스패닝트리)를 생성하는 문제이다.Union-find 알고리즘을 활용해 집합을 대표하는 원소 변경과 사이클을 생성하지 않으면서 MST를 생성해 주면 된다. DisjointSet class를 만들어서 그 안에 union, find, connected 메서드를 만들어서 해결하였다.처음 생성자에서 갯수에 맞는 숫자 배열을 생성 후 COST 순으로 정렬된 가중치를 따라서 부모를 변경해 주면 된다.풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").re..

article thumbnail
[모던 자바스크립트 Deep Dive] 10 ~ 12장

10장 - 객체 리터럴객체란?JS는 객체기반 프로그래밍 언어이며, 구성하는 거의 "모든 것"이 객체이다.- 원시 타입은 단 하나의 값, 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조이다.- 원시타입은 변경 불가능한 값, 객체는 변경 가능한 값이다.- 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 key와 value로 구성된다.- js의 함수는 일급 객체 값으로 취급한다.var count = { num: 0, // 프로퍼티 : 객체의 상태를 나타내는 값 increase: function() { // 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작 this.num++; }};  객체 리터럴에 의한 객체 생성JS는 프로토타입 기반 객체지향 언어..

article thumbnail
백준 11724 연결 요소의 개수 (node.js)
WEB/백준 문제 풀이 2024. 6. 13. 00:17

문제https://www.acmicpc.net/problem/11724 문제 해석이 문제 또한 그래프 이론 중 BFS로 쉽게 풀 수 있다.그래프의 앞 뒤가 구분되지 않기 때문에, 앞과 뒤 모두 각 배열에 추가해주고 한번 지나간 곳을 체크해 주는 방식으로 풀면 된다.풀이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 lin..

article thumbnail
백준 2606 바이러스 (node.js)
WEB/백준 문제 풀이 2024. 6. 12. 01:34

문제https://www.acmicpc.net/problem/2606문제 해석이 문제는 BFS로 쉽게 풀 수 있다.다만, 그래프의 앞 뒤가 구분되지 않기 때문에 둘다 추가하는 방식으로 풀어야한다. 풀이const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";const input = require("fs").readFileSync(filePath).toString().trim().split("\n");function solution(input) { const qty = Number(input.shift()); const pair = Number(input.shift()); const computers = input.map(..

728x90