영상
문제
<script>
/*
[문제]
세로 가로 인덱스 두 개를 랜덤으로 저장한다.
그 인덱스를 기점으로 대각선 방향으로 전부 1로 채운 후 출력하시오.
[예시]
y = 2
x = 1
[0,0,0,1,0]
[1,0,1,0,0]
[0,1,0,0,0]
[1,0,1,0,0]
[0,0,0,1,0]
*/
let list = [
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
];
</script>
Java
복사
해설
<script>
/*
[문제]
세로 가로 인덱스 두 개를 랜덤으로 저장한다.
그 인덱스를 기점으로 대각선 방향으로 전부 1로 채운 후 출력하시오.
[예시]
y = 2
x = 1
[0,0,0,1,0]
[1,0,1,0,0]
[0,1,0,0,0]
[1,0,1,0,0]
[0,0,0,1,0]
*/
let list = [
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
];
let y = Math.floor(Math.random() * list.length);
let x = Math.floor(Math.random() * list.length);
list[y][x] = 1;
y = 2;
x = 1;
document.write("y = " + y + "<br>");
document.write("x = " + x + "<br>");
let tempY = y;
let tempX = x;
// 위로 \ 채우기
while(true) {
if(tempY - 1 >=0 && tempX - 1 >= 0) {
list[tempY - 1][tempX - 1] = 1;
tempY -= 1;
tempX -= 1;
} else {
break;
}
}
tempY = y;
tempX = x;
// 아래로 \ 채우기
while(true) {
if(tempY + 1 < list.length && tempX + 1 < list.length) {
list[tempY + 1][tempX + 1] = 1;
tempY += 1;
tempX += 1;
} else {
break;
}
}
tempY = y;
tempX = x;
// 위로 / 채우기
while(true) {
if(tempY - 1 >= 0 && tempX + 1 < list.length) {
list[tempY - 1][tempX + 1] = 1;
tempY -= 1;
tempX += 1;
} else {
break;
}
}
tempY = y;
tempX = x;
// 아래로 / 채우기
while(true) {
if(tempY + 1 < list.length && tempX - 1 >= 0) {
list[tempY + 1][tempX - 1] = 1;
tempY += 1;
tempX -= 1;
} else {
break;
}
}
for(let i=0; i<list.length; i++) {
document.write(list[i] + "<br>");
}
</script>
Java
복사