頂点に星を作成
📝 頂点に星をつくる
マイJSコード
最初の試み
まず二重複文で交点を探す.
同時に、最終的に作成する配列のサイズを決定するには、最大/最小x、y座標を求める必要があります.
最終配列は.
に初期化され、頂点に対応する配列値は*
に変更されます.
最終コードは次のとおりです.👇function solution(line) {
// 교점의 최대/최소 좌표
let [maxX, minX, maxY, minY] = [-Infinity, Infinity, -Infinity, Infinity];
let points = [];
//교점 찾아서 넣기
for (let i = 0; i < line.length - 1; i += 1) {
for (let j = i + 1; j < line.length; j += 1) {
const denominator = line[i][0] * line[j][1] - line[i][1] * line[j][0];
if (denominator !== 0) {
const x =
(line[i][1] * line[j][2] - line[i][2] * line[j][1]) / denominator;
const y =
(line[i][2] * line[j][0] - line[i][0] * line[j][2]) / denominator;
//정수일때만
if (Number.isInteger(x) && Number.isInteger(y)) {
points.push([x, y]);
maxX = Math.max(maxX, x);
minX = Math.min(minX, x);
maxY = Math.max(maxY, y);
minY = Math.min(minY, y);
}
}
}
}
// 답안지 초기화
const answer = new Array(maxY - minY + 1)
.fill()
.map(() => new Array(maxX - minX + 1).fill("."));
// 교점만 바꿔주기
points.forEach(([x, y]) => {
answer[maxY - y][x - minX] = "*";
});
//일차원으로 변경
return answer.map((str) => str.join(""));
}
Reference
この問題について(頂点に星を作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@seohee0112/교점에-별-만들기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(line) {
// 교점의 최대/최소 좌표
let [maxX, minX, maxY, minY] = [-Infinity, Infinity, -Infinity, Infinity];
let points = [];
//교점 찾아서 넣기
for (let i = 0; i < line.length - 1; i += 1) {
for (let j = i + 1; j < line.length; j += 1) {
const denominator = line[i][0] * line[j][1] - line[i][1] * line[j][0];
if (denominator !== 0) {
const x =
(line[i][1] * line[j][2] - line[i][2] * line[j][1]) / denominator;
const y =
(line[i][2] * line[j][0] - line[i][0] * line[j][2]) / denominator;
//정수일때만
if (Number.isInteger(x) && Number.isInteger(y)) {
points.push([x, y]);
maxX = Math.max(maxX, x);
minX = Math.min(minX, x);
maxY = Math.max(maxY, y);
minY = Math.min(minY, y);
}
}
}
}
// 답안지 초기화
const answer = new Array(maxY - minY + 1)
.fill()
.map(() => new Array(maxX - minX + 1).fill("."));
// 교점만 바꿔주기
points.forEach(([x, y]) => {
answer[maxY - y][x - minX] = "*";
});
//일차원으로 변경
return answer.map((str) => str.join(""));
}
Reference
この問題について(頂点に星を作成), 我々は、より多くの情報をここで見つけました https://velog.io/@seohee0112/교점에-별-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol