実装[Algorithm]:カタツムリの作成
8204 ワード
💡 アルゴリズム実装問題に分類する.
質問する🛫
カタツムリを作る
正方形のカタツムリの形状の2次元配列を描くプログラムを実現します.
値の大きさの正方形を入力し、下図のように時計回りに回転して数字を塗りつぶして2 D配列を返します.
3
5
6
Output
#1 [1, 2, 3][8, 9, 4]
[7, 6, 5]
#2 [1, 2, 3, 4, 5][16,17,18,19,6]
[15,24,25,20,7][14,23,22,21,8]
[13,12,11,10,9]
ぶんせき
これは,配列順序によって値を与える繰返し文が変化すべき問題である.
複文のパターンをよく考えて体現しなければならない.
まず入力値num(長さ)x numの2次元配列を生成し,配列挿入方向が異なるたびに長さを1短くする.
必要な実施形態は以下の通りである.
1)numの長さで数字を入力します.
2)1行、num-i、方向転換、毎回2回記入します.(exnum=4の場合、(横4番)(縦3番横3番)(縦2番横2番).2回)
3)終了条件は
Solution (For Loop)
2つの1のfor loopを使用します.(第2話)
単純な配列探索問題であるが,配列空間に対する理解度を高めることができる.これにより、以降のノードdfs、bfsの実現に寄与する.
質問する🛫
カタツムリを作る
正方形のカタツムリの形状の2次元配列を描くプログラムを実現します.
値の大きさの正方形を入力し、下図のように時計回りに回転して数字を塗りつぶして2 D配列を返します.
example (input 4) :
TestCase
Input3
5
6
Output
#1 [1, 2, 3][8, 9, 4]
[7, 6, 5]
#2 [1, 2, 3, 4, 5][16,17,18,19,6]
[15,24,25,20,7][14,23,22,21,8]
[13,12,11,10,9]
ぶんせき
これは,配列順序によって値を与える繰返し文が変化すべき問題である.
複文のパターンをよく考えて体現しなければならない.
まず入力値num(長さ)x numの2次元配列を生成し,配列挿入方向が異なるたびに長さを1短くする.
必要な実施形態は以下の通りである.
1)numの長さで数字を入力します.
2)1行、num-i、方向転換、毎回2回記入します.(exnum=4の場合、(横4番)(縦3番横3番)(縦2番横2番).2回)
3)終了条件は
length == 0
に答える📖Solution (For Loop)
2つの1のfor loopを使用します.(第2話)
// 달팽이 그리기
// Solution
function answer(num) {
// 1. 배열 초기화 (자바스크립트에서는 배열 초기화를 이렇게 구현해야한다.)
let result = new Array(num);
for (let i = 0; i < num; i++) {
result[i] = new Array(num);
}
// 2. 변수 선언
let direction = 1;
let x, y, count;
x = 0;
y = 0;
count = 0;
x--; // 바로 아래 direction이 더해지기 때문에 index에 영향을 주지 않게 -1로 시작한다.(최초 수행을 위해)
// 3. 반복문 수행
while (1) {
for (let i = 0; i < num; i++) {
x += direction;
result[y][x] = ++count;
}
num--;
if (num === 0) break;
for (let j = 0; j < num; j++) {
y += direction;
result[y][x] = ++count;
}
direction *= -1; // 방향을 바꿔준다.
}
return result;
}
// TC
let input = [
3, 5, 6
]
for (let i = 0; i < input.length; i++) {
process.stdout.write(`#${i + 1} `);
console.log(answer(input[i]));
}
Review 💡単純な配列探索問題であるが,配列空間に対する理解度を高めることができる.これにより、以降のノードdfs、bfsの実現に寄与する.
Reference
この問題について(実装[Algorithm]:カタツムリの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@task11/Algorithm-구현-달팽이-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol