From faeb1dbec4b37acba44c78863aca980cbe57ef74 Mon Sep 17 00:00:00 2001 From: jung-yeon99 Date: Wed, 5 Jul 2023 20:34:48 +0900 Subject: [PATCH] =?UTF-8?q?16=EC=A3=BC=EC=B0=A8=20=EA=B9=80=EC=A0=95?= =?UTF-8?q?=EC=97=B0=20=EB=AC=B8=EC=A0=9C=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 16주차 김정연 문제풀이 --- ...\271\200\354\240\225\354\227\260_20115.js" | 15 +++++++ ...\271\200\354\240\225\354\227\260_12933.js" | 39 +++++++++++++++++++ ...\271\200\354\240\225\354\227\260_18352.js" | 36 +++++++++++++++++ ...\271\200\354\240\225\354\227\260_21921.js" | 32 +++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 "week16/BOJ_1_20115/\352\271\200\354\240\225\354\227\260_20115.js" create mode 100644 "week16/BOJ_2_12933/[\353\257\270\354\231\204]\352\271\200\354\240\225\354\227\260_12933.js" create mode 100644 "week16/BOJ_4_18352/\352\271\200\354\240\225\354\227\260_18352.js" create mode 100644 "week16/BOJ_5_21921/\352\271\200\354\240\225\354\227\260_21921.js" diff --git "a/week16/BOJ_1_20115/\352\271\200\354\240\225\354\227\260_20115.js" "b/week16/BOJ_1_20115/\352\271\200\354\240\225\354\227\260_20115.js" new file mode 100644 index 0000000..99a5b50 --- /dev/null +++ "b/week16/BOJ_1_20115/\352\271\200\354\240\225\354\227\260_20115.js" @@ -0,0 +1,15 @@ +const [[N], input] = require("fs").readFileSync("./dev/stdin").toString().trim().split("\n").map((v) => {v = v.split(" ").map(Number);return v;}); + +input.sort((a, b) => b - a); + +let min = input.pop(); +let max = input.shift() + min / 2; + +while (input.length) { + min = input.pop(); + + min > max ? ([min, max] = [max, min]) : ""; + max += min / 2; +} + +console.log(max); \ No newline at end of file diff --git "a/week16/BOJ_2_12933/[\353\257\270\354\231\204]\352\271\200\354\240\225\354\227\260_12933.js" "b/week16/BOJ_2_12933/[\353\257\270\354\231\204]\352\271\200\354\240\225\354\227\260_12933.js" new file mode 100644 index 0000000..340cdbd --- /dev/null +++ "b/week16/BOJ_2_12933/[\353\257\270\354\231\204]\352\271\200\354\240\225\354\227\260_12933.js" @@ -0,0 +1,39 @@ +let input = require('fs').readFileSync('./dev/stdin').toString().split(' '); + +function solution(input) { + let cnt = 0; + let idx = 0; + let first = true; + const word = ["q", "u", "a", "c", "k"]; + const visited = Array(input.length).fill(false); + + if (input.length % 5 !== 0) return -1; + + for (let i = 0; i < input.length; i++) { + if (input[i] === "q" && !visited[i]) { + first = true; //탐색 + + for (let j = i; j < input.length; j++) { + if (word[idx] === input[j] && !visited[j]) { + visited[j] = true; + + if (input[j] === "k") { + if (first) { + cnt += 1; + first = false; + } + idx = 0; + continue; + } + + idx += 1; + } + } + console.log(cnt); + console.log(visited); + } + } + console.log(cnt); +} + +solution(input); \ No newline at end of file diff --git "a/week16/BOJ_4_18352/\352\271\200\354\240\225\354\227\260_18352.js" "b/week16/BOJ_4_18352/\352\271\200\354\240\225\354\227\260_18352.js" new file mode 100644 index 0000000..a7cc2a8 --- /dev/null +++ "b/week16/BOJ_4_18352/\352\271\200\354\240\225\354\227\260_18352.js" @@ -0,0 +1,36 @@ +//https://velog.io/@jiyaho/%EB%B0%B1%EC%A4%80-18352-%ED%8A%B9%EC%A0%95-%EA%B1%B0%EB%A6%AC%EC%9D%98-%EB%8F%84%EC%8B%9C-%EC%B0%BE%EA%B8%B0-Node.js-BFS-%ED%92%80%EC%9D%B4 +const input = require('fs').readFileSync("./dev/stdin").toString().trim().split('\n'); +const [N, M, K, X] = input.shift().split(' ').map(Number); +const arr = input.map((v) => v.split(' ').map(Number)); +const graph = [...Array(N + 1)].map(() => []); +const distance = Array(N + 1).fill(0); // 도로의 거리를 카운트하면서 방문 체크에 이용할 배열 +let answer = []; + +// 단방향 그래프 만들기 +arr.map(([from, to]) => graph[from].push(to)); + +const bfs = (start) => { + const queue = [start]; + distance[start] = 1; //bfs 거리 start + + while (queue.length) { + const now = queue.shift(); + if (distance[now] == K + 1) { + answer.push(now); + continue; + } + for (const next of graph[now]) { + if (!distance[next]) { + queue.push(next); + distance[next] = distance[now] + 1; + } + } + } +}; + +bfs(X); +if (answer.length) { + answer = answer.sort((a, b) => a - b).join('\n'); +} else answer = -1; + +console.log(answer); \ No newline at end of file diff --git "a/week16/BOJ_5_21921/\352\271\200\354\240\225\354\227\260_21921.js" "b/week16/BOJ_5_21921/\352\271\200\354\240\225\354\227\260_21921.js" new file mode 100644 index 0000000..b981d35 --- /dev/null +++ "b/week16/BOJ_5_21921/\352\271\200\354\240\225\354\227\260_21921.js" @@ -0,0 +1,32 @@ +const input = require("fs").readFileSync("./dev/stdin").toString().trim().split("\n"); +const [N, X] = input[0].split(" ").map((x) => +x); +const visits = input[1].split(" ").map((x) => +x); + +const solution = () => { + let s = 0; + let cnt = 0; + + for (let i = s; i < X; i++) { + cnt += visits[i]; //방문자 + } //화살표 함수표현식 지향! + + let maxVisit = cnt; + let answer = 1; + + for (let i = s + 1; i + X <= N; i++) { + cnt = cnt - visits[i - 1] + visits[i + X - 1]; + if (cnt > maxVisit) { + maxVisit = cnt; + answer = 1; + } else if (cnt === maxVisit) answer++; //최대 방문자수 count + } + + if (maxVisit === 0) { + console.log("SAD"); + } else { + console.log(maxVisit); + console.log(answer); + } +}; + +solution(); \ No newline at end of file