From e85822d700ef294615ddd6be62e7b014bd3ea222 Mon Sep 17 00:00:00 2001 From: Seoyeon Park <68735700+syeonnn@users.noreply.github.com> Date: Sun, 22 Oct 2023 18:03:05 +0900 Subject: [PATCH 1/2] week7 --- week7/week7/doo_week7/doo_week7_1.js | 50 ++++++++++++++++++++++ week7/week7/doo_week7/doo_week7_2.js | 64 ++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 week7/week7/doo_week7/doo_week7_1.js create mode 100644 week7/week7/doo_week7/doo_week7_2.js diff --git a/week7/week7/doo_week7/doo_week7_1.js b/week7/week7/doo_week7/doo_week7_1.js new file mode 100644 index 0000000..2c47d1e --- /dev/null +++ b/week7/week7/doo_week7/doo_week7_1.js @@ -0,0 +1,50 @@ +// 백준 7562 +// [입력] +// 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. +// 각 테스트 케이스는 세 줄로 이루어져 있다. +// 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. +// 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있다. +// 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. + +// [출력] +// 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. + +const fs = require('fs'); +const INPUTFILE = process.platform === 'linux' ? '/dev/stdin' : 'week7/input.txt'; +const input = fs.readFileSync(INPUTFILE).toString().trim().split('\n'); + +//console.log(typeof(input[0]),typeof(input[1])); +//map(Number)했는데 왜 object임?? 숫자요소로 배열만들었는데.....ㅠㅠ + +const direction = [[1,2],[-1,2],[1,-2],[-1,-2],[2,1],[2,-1],[-2,1],[-2,-1]]; +let start,end,size,visited; + +// 최단길이 탐색이므로 bfs 사용 +function bfs(){ + queue = [[start[0],start[1],0]]; + while(!!queue.length){ + const [x,y,move] = queue.shift(); + + if(x == end[0] && y == end[1]) return move; + + for(let i=0;i<8;i++){ + const next_x = x + direction[i][0]; + const next_y = y + direction[i][1]; + + if(next_x>=0 && next_x=0 && next_yArray(size).fill(0)); + + console.log(bfs()); +} \ No newline at end of file diff --git a/week7/week7/doo_week7/doo_week7_2.js b/week7/week7/doo_week7/doo_week7_2.js new file mode 100644 index 0000000..5a3748f --- /dev/null +++ b/week7/week7/doo_week7/doo_week7_2.js @@ -0,0 +1,64 @@ +// 백준 2667 +// [입력] +// 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, +// 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. + +// [출력] +// 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각 단지내 집의 수를 오름차순으로 정렬하여 한 줄에 하나씩 출력하시오. + +const fs = require('fs'); +const INPUTFILE = process.platform === 'linux' ? '/dev/stdin' : 'week7/input.txt'; +const input = fs.readFileSync(INPUTFILE).toString().trim().split('\n'); + +const N = Number(input.shift()); +const map = Array.from(Array(N), ()=>Array(N)); +const visited = Array.from(Array(N), ()=>Array(N).fill(0)); + +for(let i=0;i { + + // map범위 내, 방문X, 집 존재O + if( x>=0 && x=0 && y { + for(let x=0; xa-b); // 오름차순 정렬 + console.log(answer.length+'\n'+answer.join('\n')); // 총 단지수, 각 단지내 집의 수 +} + +sol(); From 99e478dcc23c0d604a8f8e738cad0fc6ff351414 Mon Sep 17 00:00:00 2001 From: Seoyeon Park <68735700+syeonnn@users.noreply.github.com> Date: Sun, 22 Oct 2023 21:10:22 +0900 Subject: [PATCH 2/2] week7 --- week7/week7/doo_week7/doo_week7_1.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/week7/week7/doo_week7/doo_week7_1.js b/week7/week7/doo_week7/doo_week7_1.js index 2c47d1e..613700b 100644 --- a/week7/week7/doo_week7/doo_week7_1.js +++ b/week7/week7/doo_week7/doo_week7_1.js @@ -13,14 +13,11 @@ const fs = require('fs'); const INPUTFILE = process.platform === 'linux' ? '/dev/stdin' : 'week7/input.txt'; const input = fs.readFileSync(INPUTFILE).toString().trim().split('\n'); -//console.log(typeof(input[0]),typeof(input[1])); -//map(Number)했는데 왜 object임?? 숫자요소로 배열만들었는데.....ㅠㅠ - const direction = [[1,2],[-1,2],[1,-2],[-1,-2],[2,1],[2,-1],[-2,1],[-2,-1]]; let start,end,size,visited; // 최단길이 탐색이므로 bfs 사용 -function bfs(){ +const bfs = () => { queue = [[start[0],start[1],0]]; while(!!queue.length){ const [x,y,move] = queue.shift(); @@ -39,12 +36,16 @@ function bfs(){ } } -const n = input.shift(); // 테스크케이스 개수 -for(let j=1;j<=n;j++){ - size = Number(input.shift()); - start = input.shift().split(' ').map(Number); - end = input.shift().split(' ').map(Number); - visited = Array.from(Array(size),()=>Array(size).fill(0)); +const sol = () => { + const n = input.shift(); // 테스트케이스 개수 + for(let j=1;j<=n;j++){ + size = Number(input.shift()); + start = input.shift().split(' ').map(Number); + end = input.shift().split(' ').map(Number); + visited = Array.from(Array(size),()=>Array(size).fill(0)); + + console.log(bfs()); + } +} - console.log(bfs()); -} \ No newline at end of file +sol();