라라리라
2023.08.01 / Step 7 [이차반복문] - 코딩 13 일차 본문
이차반복문1_개념01_기본.html
<script>
/*
[개념] 2차원 반복문
반복문 2개를 사용해서 사각형의 데이터를 표현할 수 있다.
[1] 첫번째 반복문 i가 세로를 담당한다.
[2] 두번째 반복문 j가 가로를 담당한다.
i가 0 일때, j 는 0 1 2 3
i가 1 일때, j 는 0 1 2 3
i가 2 일때, j 는 0 1 2 3
3 * 4 = 12 총 12번 반복을 하게된다.
보통 세로는 i나 y를 사용하고 , 가로는 j나 x를 사용한다.
*/
for(let i=0; i<3; i++) {
for(let j=0; j<4; j++) {
console.log("[i] = " + i + ", [j] = " + j);
document.write("[i] = " + i + ", [j] = " + j + "<br>");
}
}
</script>
이차반복문1_개념02_사각형.html
<script>
/*
[개념] 사각형그리기
랜덤으로 세로(3~6)을 저장하고,
각 길이에 맞게 사각형을 그려보시오.
단, 가로는 항상 5이다.
일차원 반복문과 이차원 반복문으로 그려보시오.
[예시]
sero = 3
#####
#####
#####
*/
let garo = 5;
let sero = Math.floor(Math.random() * 4) + 3;
document.write("sero = " + sero + "<br>");
// 일차원 반복문
for(let a = 0 ; a < garo * sero; a++){
document.write(" # ");
if(a % 5 == 4){
document.write("<br>");
}
}
// 이차원 반복문
for(let i = 0 ; i < sero; i++){
for(let j = 0 ; j < 5; j++){
document.write("#")
}
document.write("<br>")
}
</script>
이차반복문1_개념03_출력가로.html
<script>
/*
[문제]
랜덤(3~6)숫자 하나를 저장하고 그 숫자만큼 아래와 같은 규칙 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시1]
r = 6
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
[예시2]
r = 3
1 2 3
4 5 6
7 8 9
*/
let garo = 3;
let sero = Math.floor(Math.random() * 4) + 3;
document.write("r = " + sero + "<br>");
// 일차원 반복문
let num = 1;
for(let a = 0; a <garo*sero; a++){
document.write(num + " ");
if(a % 3 == 2){
document.write("<br>")
}
num ++;
}
document.write("===========================================<br>");
// 이차원 반복문
let number = 1;
for(let i = 0; i < sero; i ++){
for(let j = 0; j < garo; j++){
document.write(number + " ");
number++;
}
document.write("<br>");
}
</script>
이차반복문1_개념04_출력세로.html
<script>
/*
[문제]
랜덤(3~6)숫자 하나를 저장하고 그 숫자만큼 아래와 같은 규칙 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시1]
r = 6
1 7 13
2 8 14
3 9 15
4 10 16
5 11 17
6 12 18
[예시2]
r = 3
1 4 7 // 3 * 0 + 1, 3 * 1 + 1, 3 * 2 + 1
2 5 8 // 3 * 0 + 2, 3 * 1 + 2, 3 * 2 + 2
3 6 9 // 3 * 0 + 3, 3 * 1 + 3, 3 * 3 + 3
*/
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
// 일차원 반복문
for(let i = 0 ; i < r; i++){
let num = i + 1;
let x = r * 0 + num;
let y = r * 1 + num;
let z = r * 2 + num;
document.write(x + " " + y + " " + z + "<br>");
}
// 이차원 반복문
for(let i = 0; i < r; i++){
let num = i + 1;
for(let j = 0; j < 3; j++){
document.write(r * j + num + " ");
}
document.write("<br>")
}
</script>
이차반복문1_개념05_출력밀기.html
<script>
/*
[문제]
랜덤(3~6)숫자 하나를 저장하고 그 숫자만큼 아래와 같이 출력하시오.
단, 아래 일차 반복문과 이차 반복문으로 출력하시오.
[예시1]
r = 6
1 2 3
2 3 4
3 4 5
4 5 6
[예시2]
r = 4
1 2 3
2 3 4
*/
let sero = Math.floor(Math.random() * 4) + 3;
let garo = 3;
document.write("r = " + sero + "<br>");
// 일차원 반복문
for(let a = 0 ; a < sero -2 ; a++){
let x = a + 1;
let y = a + 2;
let z = a + 3;
document.write(x + " " + y + " " + z + "<br>");
}
// 이차원 반복문
for(let a = 0 ; a < sero - 2 ; a ++){
for(let b = 0; b < garo ; b++){
document.write((a + b + 1) + " ");
}
document.write("<br>")
}
</script>
이차반복문1_문제01_출력이차원.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고
그 숫자만큼 아래와 같은 규칙으로 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시]
r = 6
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
*/
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
let num = 1;
for(let i = 0; i < r; i++){
for(let j = 0; j < 3; j++){
document.write(num + " ");
}
num++;
document.write("<br>");
}
document.write("<br><br>");
let count = 0;
let temp = 1;
for(let i = 0; i < r * 3; i++){
document.write(temp + " ");
count++;
if(count == 3){
temp++;
document.write("<br>");
count = 0;
}
}
</script>
이차반복문1_문제02_출력거꾸로가로.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고
그 숫자만큼 아래와 같은 규칙으로 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시]
r = 6
3 2 1
6 5 4
9 8 7
12 11 10
15 14 13
18 17 16
*/
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
for(let i = 1; i <= r; i++){
let num = 3 * i;
for(let j = 0; j < 3; j++){
document.write(num + " ");
num--;
}
document.write("<br>");
}
/////////////////////////////////////////////////
document.write("<br><br><br>");
document.write("r = " + r + "<br>");
for(let i = 0; i < r ; i++){
let x = 3 * (i + 1);
let y = x - 1;
let z = x - 2;
document.write(x + " " + y + " " + z + "<br>");
}
</script>
이차반복문1_문제03_출력이차원세로.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고 그 숫자만큼
아래와 같은 규칙으로 출력하시오.
단, 이차 반복문으로 출력하시오.
[예시1]
r = 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
[예시2]
r = 3
1 2 3
1 2 3
1 2 3
*/
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
for(let i = 0; i < 3; i++){
let num = 1;
for(let j = 0; j < r; j++){
document.write(num + " ");
num++;
}
document.write("<br>");
}
</script>
이차반복문1_문제04_출력뒤집기세로.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고
그 숫자만큼 아래와 같은 규칙으로 출력하시오.
단, 일차 반복문으로 출력하시오.
[예시]
r = 6
[출력]
18 12 6
17 11 5
16 10 4
15 9 3
14 8 2
13 7 1
*/
//일차로 출력해보기
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
for(let i = 0; i < r; i++){
let x = r * 3 - i;
let y = x - r;
let z = x - r * 2;
document.write(x + " " + y + " " + z + "<br>");
}
//이차로 출력해보기;
document.write("<br><br><br>")
for(let i = 0 ; i < r; i++){
let num = r * 3 - i;
for(let j = 0; j < 3; j++){
document.write(num + " ");
num -= r;
}
document.write("<br>");
}
</script>
이차반복문1_문제05_출력거꾸로밀기.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고 그 숫자만큼
아래와 같은 규칙으로 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시]
r = 6
[출력]
3 2 1
4 3 2
5 4 3
6 5 4
*/
//이차;
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
for(let i = 0 ; i < r - 2; i++){
let num = 3 + i;
for(let j = 0; j < 3; j++){
document.write(num + " ");
num--;
}
document.write("<br>");
}
document.write("<br><br>");
//일차;
document.write(("r = " + r + "<br>"));
for(let i = 0; i < r - 2; i++){
let x = 3 + i;
let y = x - 1;
let z = x - 2;
document.write(x + " " + y + " " + z + "<br>");
}
</script>
이차반복문1_문제06_출력뒤집기밀기.html
<script>
/*
[문제]
3~6 사이의 랜덤 숫자 하나를 저장하고
그 숫자만큼 아래와 같은 규칙으로 출력하시오.
단, 일차 반복문과 이차 반복문으로 출력하시오.
[예시]
r = 6
6 5 4
5 4 3
4 3 2
3 2 1
*/
//이차;
let r = Math.floor(Math.random() * 4) + 3;
document.write("r = " + r + "<br>");
for(let i = 0; i < r - 2; i++){
let temp = r - i;
for(let j = 0; j < 3; j++){
document.write(temp + " ");
temp--;
}
document.write("<br>");
}
document.write("<br><br>");
//일차
let temp2 = r;
document.write("r = " + r + "<br>");
for(let i = 0; i < r - 2; i++){
let x = temp2 - i;
let y = x - 1;
let z = x - 2;
document.write(x + " " + y + " " + z + "<br>");
}
</script>
이차반복문1_문제07_구구단세로.html
<script>
/*
[문제]
아래와 같이 2단부터 9단까지 구구단을 출력해보시오.
단, 이차 반복문을 사용한다.
[정답]
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
...
...
9 X 8 = 72
9 X 9 = 81
*/
//이차쓰기
for(let i = 2; i <= 9; i++){
for(let j = 1; j <= 9; j++){
document.write(i + " x " + j + " = " + (i * j) + "<br>");
}
document.write("<br>")
}
</script>
이차반복문1_문제08_구구단가로.html
<script>
/*
[문제]
아래와 같이 구구단을 가로로 출력해보시오.
단, 이차 반복문을 사용한다.
[정답]
2 * 1 = 2 3 * 1 = 3 ... 9 * 1 = 9
2 * 2 = 4 3 * 2 = 6 ... 9 * 2 = 18
2 * 3 = 6 3 * 3 = 9 ... 9 * 3 = 27
... ... ...
... ... ...
2 * 9 = 18 3 * 9 = 27 ... 9 * 9 = 81
*/
//이차;
for(let i = 1; i <= 9; i++){
for(let j = 2; j <= 9; j++){
document.write(j + " * " + i + " = " + (j * i) + " ")
}
document.write("<br>");
}
</script>
이차반복문2_개념01_전체비교.html
<script>
/*
[개념] 일차원 비교 방법
a배열과 b배열을 비교하고 서로 값이 같으면 숫자 0으로 변경하시오.
아래 배열을 보면 값 10만 같다.
*/
let a = [10, 20, 30, 40];
let b = [10, 5, 20, 9];
let size = a.length;
for(let i=0; i<size; i++) {
if(a[i] == b[i]) {
a[i] = 0;
b[i] = 0;
}
}
document.write("a = " + a + "<br>");
document.write("b = " + b + "<br>");
/*
[개념] 이차원 비교 방법
c배열의 값이 d배열 안에 있다면 둘 다 0으로 변경하시오.
이번엔 자리별로 검사하는 것이 아니라,
c배열의 값 10이 d배열 안에 자리에 상관없이 포함되어있다면 0으로 변경해야 한다.
마찬가지로 c배열의 값 20도 d에 포함되어있기 때문에, 0으로 변경해야 한다.
c배열 하나마다 d전체를 전부 비교해야 하므로, 총 16번 반복해야 한다.
*/
let c = [10, 20, 30, 40];
let d = [ 7, 5, 20, 10];
for(let i = 0 ; i < size; i ++){
for(let j = 0 ; j < size; j ++){
if(c[i] == d[j]){
c[i] = 0;
d[j] = 0;
}
}
}
document.write("c = " + c + "<br>d = " + d + "<br>")
</script>
이차반복문2_개념02_자기비교.html
<script>
/*
[문제]
arr배열은 철수 반 중간고사 점수이다.
각 학생들이 다른 학생들과 비교하여 자기보다 크거나 같은 점수를 출력하시오.
[정답]
10보다 큰 점수는 54 90 20 이다.
54보다 큰 점수는 90 이다.
90보다 큰 점수는 없다.
20보다 큰 점수는 54 90 이다.
*/
let arr = [10, 54, 90, 20];
for(let i = 0 ; i < arr.length; i++){
document.write(arr[i] + "보다 큰 점수는 ");
let temp = false;
for(let j = 0; j < arr.length; j++){
if(i != j && arr[i] < arr[j]){
document.write(arr[j] + " ");
temp = true;
}
}
if(temp == true){
document.write("이다. <br>");
} else {
document.write("없다. <br> ")
}
}
</script>
이차반복문2_개념03_비교추가.html
<script>
/*
[문제]
a배열과 b배열 전체를 비교하여
a배열 안에도 있고 b배열 안에도 있는 값은
c배열에 저장하시오.
[정답]
c = [10, 20]
*/
let a = [10, 20, 30, 40];
let b = [10, 5, 20, 9];
let c = [];
for(let i = 0 ; i < a.length; i++){
for(let j = 0 ; j < a.length; j++){
if(a[i] == b[j]){
c.push(b[j]);
}
}
}
document.write( " c = " + c);
</script>
이차반복문2_개념04_자기비교제거.html
<script>
/*
[문제]
arr배열의 각 값이 나머지 값들과 비교해서 서로 같으면
둘 다 0으로 변경하시오.
[1] 값 0은 비교에서 무시한다.
[2] 자기 자리는 비교에서 무시한다.
[예시]
10 : [0,30,40,0,20,30,50]
30 : [0,0,40,0,20,0,50]
40 :
0 :
20 :
0 :
50 :
[정답]
[0,0,40,0,20,0,50]
*/
let arr = [10, 30, 40, 10, 20, 30, 50];
for(let i = 0 ; i < arr.length; i ++){
for(let j = 0; j < arr.length; j ++){
if(i != j && arr[i] == arr[j]){
arr[i] = 0;
arr[j] = 0;
}
}
}
document.write(arr)
</script>
이차반복문2_문제01_자기비교개수.html
<script>
/*
[문제]
arr배열의 각각의 값이 arr배열 전체와 비교해서
각각 몇 개씩 있는지 출력하시오.
[정답]
10 : 4
30 : 2
40 : 1
10 : 4
20 : 1
30 : 2
50 : 1
10 : 4
10 : 4
*/
let arr = [10, 30, 40, 10, 20, 30, 50, 10, 10];
for(let i = 0 ; i < arr.length; i++){
let count = 0;
for(let j = 0; j < arr.length; j++){
if(arr[i] == arr[j]){
count++;
}
}
document.write(arr[i] + " : " + count + "<br>");
}
</script>
이차반복문2_문제02_자기비교차.html
<script>
/*
[문제]
arr배열의 각 값이 arr배열 전체의 본인 값에서
나머지 값을 모두 뺀 값을 total배열에 저장하시오.
[예시]
10 에서 나머지 값들 20, 30, 40 을 전부 뺀다. total = [-80]
20 에서 나머지 값들 10, 30, 40 을 전부 뺀다. total = [-80, -60]
30 에서 나머지 값들 10, 20, 40 을 전부 뺀다. total = [-80, -60, -40]
40 에서 나머지 값들 10, 20, 30 을 전부 뺀다. total = [-80, -60, -40, -20]
[정답]
-80, -60, -40, -20
*/
let arr = [10, 20, 30, 40];
let total = [];
for(let i = 0; i < arr.length; i++){
let sum = arr[i];
for(let j = 0; j< arr.length; j++){
if(i != j){
sum -= arr[j];
}
}
total.push(sum);
document.write("total = " + total + "<br>");
}
</script>
이차반복문2_문제03_중복값짝수.html
<script>
/*
[문제]
a배열과 b배열 전체를 비교하여
a배열 안에도 있고 b배열 안에도 있는 값은
c배열에 저장하시오.
단, 짝수만 저장하시오.
[정답]
2, 6
*/
let a = [1, 2, 7, 40, 3, 6];
let b = [1, 6, 2, 9, 3, 7];
let c = [];
for(let i = 0; i < a.length; i++){
for(let j = 0; j < b.length; j++){
if(a[i] == b[j]){
document.write(b[j] + "<br>");
if(b[j] % 2 == 0){
c.push(b[j]);
}
}
}
}
document.write("c = " + c + "<br>");
</script>
이차반복문2_문제04_중복값개수.html
<script>
/*
[문제]
a배열과 b배열 전체를 비교하여
a배열 안에도 있고 b배열 안에도 있는 값은
c배열에 저장하시오.
단, b배열에 같은 값이 두 개 있는 값만 추가하시오.
[정답]
7, 3
*/
let a = [1, 2, 7, 40, 3, 6];
let b = [1, 2, 7, 3, 7, 6, 2, 2, 3];
let c = [];
for(let i = 0; i < a.length; i++){
let count = 0;
for(let j = 0; j < b.length; j++){
if(a[i] == b[j]){
count++
}
}
if(count == 2){
c.push(a[i]);
}
}
document.write("c = " + c + "<br>");
</script>
이차반복문2_문제05_점수검색.html
<script>
/*
[문제]
number 배열은 학생 번호이고,
score 배열은 각 학생의 시험점수이다.
search 배열은 학생들이 시험 결과가 궁금해서
검색한 번호들이다.
각 학생이 검색한 순서대로 점수를 출력하시오.
[정답]
1002 : 65
1004 : 1
1003 : 23
1001 : 4
1005 : 45
*/
let number = [1001, 1002, 1003, 1004, 1005, 1006];
let score = [4, 65, 23, 1, 45, 7];
let search = [1002, 1004, 1003, 1001, 1005];
for(let i = 0; i < search.length; i++){
for(let j = 0; j < number.length; j++){
if(search[i] == number[j]){
document.write(number[j] + " : " + score[j]);
}
}
document.write("<br>");
}
</script>
이차반복문2_문제06_상품구입.html
<script>
/*
[문제]
item배열은 쇼핑몰 아이템 번호들이다.
count배열은 오늘 판매된 아이템 개수를 적는 장부이다.
purchase배열은 오늘 판매된 아이템 번호이다.
오늘 판매된 개수만큼 count배열의 값을 증가시키시오.
[예시]
1002 : count = [ 0, 1, 0, 0, 0, 0]
1003 : count = [ 0, 1, 1, 0, 0, 0]
1004 : count = [ 0, 1, 1, 1, 0, 0]
1001 : count = [ 1, 1, 1, 1, 0, 0]
1001 : count = [ 2, 1, 1, 1, 0, 0]
[정답]
2, 1, 1, 1, 0, 0
*/
let item = [1001, 1002, 1003, 1004, 1005, 1006];
let count = [ 0, 0, 0, 0, 0, 0];
let purchase = [1002, 1003, 1004, 1001, 1001];
for(let i = 0; i < purchase.length; i++){
for(let j = 0; j < item.length; j++){
if(purchase[i] == item[j]){
count[j]++;
}
}
}
document.write("count = " + count + "<br>");
</script>
이차반복문2_문제07_상품취소.html
<script>
/*
[문제]
item배열은 쇼핑몰 아이템 번호이다.
count배열은 오늘 판매된 아이템 개수를 적는 장부이다.
cancel배열은 오늘 취소된 아이템 번호이다.
오늘 취소된 개수만큼 count배열의 값을 감소시키시오.
[예시]
1002: count = [ 3, 1, 1, 4, 2, 1]
1003: count = [ 3, 1, 0, 4, 2, 1]
1004: count = [ 3, 1, 0, 3, 2, 1]
1001: count = [ 2, 1, 0, 3, 2, 1]
1001: count = [ 1, 1, 0, 3, 2, 1]
[정답]
[1, 1, 0, 3, 2, 1]
*/
let item = [1001, 1002, 1003, 1004, 1005, 1006];
let count = [ 3, 2, 1, 4, 2, 1];
let cancel = [1002, 1003, 1004, 1001, 1001];
for(let i = 0 ; i < cancel.length; i++){
document.write(cancel[i] + " : count = [ " )
for(let j = 0; j < count.length; j++){
if(cancel[i] == item[j]){
count[j] -= 1;
}
document.write(count[j]);
if(j < count.length - 1){
document.write( " , ");
}
}
document.write("]<br>");
}
document.write("<br>[정답]<br>[" + count + "] ");
</script>
이차반복문2_문제08_철수답안지.html
<script>
/*
[문제]
철수는 학교에서 산수 시험을 봤다.
a배열의 숫자와 b배열 숫자의 각각의 값의 합을 구하는 시험이다.
철수의 답안지와 비교해서 철수의 정답 개수를 출력하시오.
아래 답안지는 철수가 작성한 정답이다.
철수는 답을 문제 순서대로 적은 것이 아니라 뒤죽박죽 적었다.
위 문제의 해답이 철수의 답안지에 있으면 정답이다.
단, 같은 인덱스의 자리가 아니어도 상관없다.
a = [4, 65, 23, 1, 45, 7]
b = [61, 2, 54, 3, 5, 6]
철수 = [67, 13, 2, 22, 65, 4]
정답은 [ 65, 67, 77, 4, 50, 13 ] 이고,
철수의 답은 [67, 13, 2, 22, 65, 4] 이다.
위치에 상관없이 정답을 찾는 문제이므로, [65, 67, 4, 13] 총 4문제를 맞췄다.
[1] 정답지 = [] 배열에 먼저 문제의 정답지를 완성한다.
[2] 철수 배열과 비교해서 몇 문제 맞혔는지 출력하시오.
[정답]
4
*/
let a = [4, 65, 23, 1, 45, 7];
let b = [61, 2, 54, 3, 5, 6];
let 정답지 = [];
let 철수 = [67, 13, 2, 22, 65, 4];
for(let i = 0; i < a.length; i++){
정답지.push(a[i] + b[i]);
}
document.write("정답지 = " + 정답지 + "<br>");
let count = 0;
for(let i = 0; i < 철수.length; i++){
for(let j = 0; j < 정답지.length; j++){
if(철수[i] == 정답지[j]){
count++;
document.write(철수[i] + " ");
}
}
}
document.write("<br>답 = " + count + "<br>");
</script>
'코딩 > 2023 JavaScript Console' 카테고리의 다른 글
2023.08.03 / Step 7 [이차반복문] - 코딩 15 일차 (0) | 2023.08.03 |
---|---|
2023.08.02 / Step 7 [이차반복문] - 코딩 14 일차 (0) | 2023.08.02 |
2023.07.31 / Step 6 [배열] - 코딩 12 일차 (0) | 2023.07.31 |
2023.07.30 / Step 5 [배열] - 코딩 11 일차 (0) | 2023.07.30 |
2023.07.29 / Step 4 [반복문] - 코딩 10 일차 (0) | 2023.07.29 |