배열4_개념01_랜덤출력.html
<script>
/*
[문제]
[조건1] arr배열에 랜덤숫자(1~100) 5개를 추가하고,
[조건2] 랜덤으로 위 값 중 한 개만 출력하시오.
[예시]
arr = 1, 43, 22, 77 ,44
출력 = 22
*/
let arr = [];
for(let a = 0; a < 5; a++){
arr.push(Math.floor(Math.random() * 100 + 1));
}
let index = Math.floor(Math.random() * arr.length);
document.write("arr = " + arr + "<br> 출력 = " + arr[index]);
</script>
배열4_개념02_랜덤교환.html
<script>
/*
[문제]
랜덤으로 arr배열의 값을 교환해보자.
[예시]
30과 40을 교환
교환 전 = 10,20,30,40,50,60,70,80
교환 후 = 10,20,40,30,50,60,70,80
*/
let arr = [10, 20, 30, 40, 50, 60, 70, 80];
document.write("교환 전 = " + arr + "<br>");
</script>
배열4_개념03_홀수추가.html
<script>
/*
[문제]
다음 a배열의 값 중 홀수만 b배열에 저장하시오.
[정답]
b = 49, 51, 17
*/
let a = [49, 2, 51, 22, 17];
let b = [];
for(let x = 0; x < a.length; x++){
if(a[x] % 2 == 1){
b.push(a[x]);
}
}
document.write(b);
</script>
배열4_개념04_거꾸로출력.html
<script>
/*
[문제]
arr배열의 값들을 거꾸로 출력하시오.
[정답]
60 54 12 44 21
*/
let arr = [21, 44, 12, 54, 60];
// 인덱스를 먼저 출력해보자!
// 4, 3, 2, 1, 0
for(let a = arr.length -1; a >=0; a--){
document.write(arr[a] + " ");
}
</script>
배열4_개념05_사각형출력.html
<script>
/*
[문제]
아래 arr배열의 값을 사각형 모양으로 출력하시오.
[정답]
1 2 3
4 5 6
7 8 9
*/
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let a = 0 ; a < arr.length; a++){
document.write(arr[a] + " ");
if(a % 3 == 2){
document.write("<br>");
}
}
</script>
배열4_개념06_앞뒤로밀기.html
<script>
/*
[문제1]
a배열의 값들을 한칸씩 앞으로 당기고 출력하시오.
[정답]
a = 10,20,30,40,50,0
a[0] = a[1]
a[1] = a[2]
a[2] = a[3]
a[4] = a[5]
*/
let a = [0, 10, 20, 30, 40, 50];
let size = a.length - 1;
for(let x = 0; x < size; x++){
a[x] = a[x + 1];
}
a[size] = 0;
document.write(a+"<br>");
/*
[문제2]
b배열의 값들을 한칸씩 뒤로 밀고 출력하시오.
b = 0,10,20,30,40,50
a[0] = 0
a[1] = a[0]
a[2] = a[1]
a[3] = a[2]
a[4] = a[3]
a[5] = a[4]
*/
let b = [10, 20, 30, 40, 50, 0];
let index = b.length - 1;
for(let y = index; y > 0; y--){
b[y] = b[y - 1];
}
b[0] = 0;
document.write(b+ "<br>")
</script>
배열4_개념07_채우기.html
<script>
/*
[문제]
공간이 10개인 arr배열이 있다.
랜덤(0~9)숫자 한개를 저장하고,
랜덤숫자의 인덱스부터 랜덤숫자만큼 1부터 1씩증가하면서
arr배열에 순차적으로 채운다.
단, 만약에 숫자가 배열의 길이를 벗어나면 앞에서부터 채운다.
[예시1]
r = 3
arr = 0,0,0,1,2,3,0,0,0,0
- 인덱스 3부터 3개를 채운다.
[예시7]
r = 7
arr = 4,5,6,7,0,0,0,1,2,3
- 인덱스 7부터 7개를 채운다.
- 배열의 길이를 벗어나기때문에 앞으로 이동 후 채운다.
*/
let arr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let random = Math.floor(Math.random() * 10 );
document.write(random +"<br>");
let count = 1;
let index = random
for(let a = 0; a < random; a++){
arr[index % 10] = count;
index++;
count++;
}
document.write(arr);
</script>
배열4_개념08_세로출력.html
<script>
/*
[가로세로합]
아래 arr배열은 한 줄 배열이지만
아래와 같이 사각형으로 놓였다고 했을 때,
세로로 출력하시오.
[예시]
1 5 9
2 6 10
3 7 11
4 8 12
*/
let arr = [1, 2, 3, 4,
5, 6, 7, 8,
9, 10,11,12];
/*
0 4 8
1 5 9
2 6 10
3 7 11
*/
for(let a = 0; a < 4; a++){
document.write(a + " " + (a + 4) + " " + (a + 8) +"<br>" );
}
</script>
배열4_문제01.html
<script>
/*
[문제]
numbers 배열은 학생들의 번호를 저장한 정보이고,
scores 배열은 학생들의 점수 정보이다.
랜덤으로 한 학생의 학번과 점수를 출력하시오.
[예시1]
r = 0
1001, 87
[예시2]
r = 3
1004, 98
*/
let numbers = [1001, 1002, 1003, 1004, 1005];
let scores = [ 87, 11, 45, 98, 23];
let r = Math.floor(Math.random() * 5);
document.write("r = " + r + "<br>");
document.write(numbers[r] + " " + scores[r] );
</script>
배열4_문제02_학번교환.html
<script>
/*
[문제]
numbers 배열은 학생들의 번호를 저장한 정보이고,
scores 배열은 학생들의 점수 정보이다.
실수로 학생들의 점수가 한칸씩 밀렸다.
학생들의 점수를 한칸씩 앞으로 당기고
맨 앞의 점수는 맨 뒤에 저장하시오.
[정답]
numbers = 1001, 1002, 1003, 1004, 1005
scores = 11, 45, 98, 23, 87
*/
let numbers = [1001, 1002, 1003, 1004, 1005];
let scores = [ 87, 11, 45, 98, 23];
/*
s[0] = s[1]
s[1] = s[2]
s[2] = s[3]
s[3] = s[4]
s[4] = s[0]
*/
let back = scores[0]
let size = scores.length - 1;
for(let a = 0; a < size; a++ ){
scores[a] = scores[a + 1];
} scores[size] = back;
document.write(scores);
</script>
배열4_문제03_홀수짝수추가.html
<script>
/*
[문제]
arr배열의 값을 비교해서,
그 중에 짝수는 b배열에 추가하고,
그 중 홀수는 c배열에 추가하시오.
[정답]
b = 2, 22
c = 49, 51, 17
*/
let a = [49, 2, 51, 22, 17];
let b = [];
let c = [];
for( let x = 0; x < a.length; x ++){
if(a[x] % 2 == 0 ){
b.push(a[x]);
} else {
c.push(a[x]);
}
}
document.write("b = " + b + "<br>c = " + c);
</script>
배열4_문제04_거꾸로추가.html
<script>
/*
[문제]
a베열 값을 b배열에 추가하시오.
단, 값을 거꾸로 추가하시오.
[정답]
b = 40,30,20,10
*/
let a = [10, 20, 30, 40];
let b = [ 0, 0, 0, 0];
let index = a.length - 1;
for(let x = index; x >= 0; x-- ){
b[index - x] = (a[x]);
}
document.write(b);
</script>
배열4_문제05_일이삼일이삼.html
<script>
/*
[문제]
랜덤(2~10)의 숫자를 저장하고
랜덤 개수만큼 반복을 하면서 반복 숫자를 arr배열에 저장하시오.
반복 숫자란, 1 2 3 1 2 3 1 2 3 을 반복해서 저장하는 것이다.
[예시1]
r = 8
arr = 1,2,3,1,2,3,1,2
[예시2]
r = 4
arr = 1,2,3,1
*/
let arr = [];
let r = Math.floor(Math.random()* 9 ) + 2;
document.write("r = " + r + "<br>");
for(let a = 0; a < r; a++){
arr.push(a % 3 + 1)
}
document.write(arr);
</script>
배열4_문제06_거꾸로채우기.html
<script>
/*
[문제]
공간이 10개인 arr배열이 있다.
index변수(=시작 인덱스)에 0~9사이의 랜덤 숫자를 저장하고,
count변수(=개수)에 1~10사이의 랜덤 숫자를 저장한다.
시작 인덱스부터 개수만큼 거꾸로 arr배열에 숫자를 채워나간다.
채우는 숫자는 1부터 1씩 증가한다.
[예시]
* 인덱스 3부터 7개를 채운다.
index = 3
count = 7
arr = 4,3,2,1,0,0,0,7,6,5
*/
let arr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let index = Math.floor(Math.random() * 10);
let count = Math.floor(Math.random() * 10) + 1;
document.write("index = " + index + "<br>count = " + count +"<br>" );
let b = 1
for(let a = 0; a < count; a++){
arr[index] = b
if(index - 1 >= 0 ){
index -= 1;
} else {
index = arr.length - 1;
}
b++;
}
document.write(arr);
</script>
배열4_문제07_삼각형.html
<script>
/*
[문제]
arr배열을 다음과 같이 출력하시오.
[정답]
1 0
2 3 1 2
4 5 6 3 4 5
7 8 9 0 6 7 8 9
*/
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
let count = 0;
let r = 0
for(a = 0; a < arr.length; a++){
document.write([a] + " ");
if(r == count){ //0 0. 1 1. 1 2. 2 . 2 , 3 3
document.write("<br>")
count = 0;
r++
} else {
count++
}
}
</script>
배열4_문제08_거꾸로삼각형.html
<script>
/*
[문제]
arr배열을 다음과 같이 출력하시오.
[정답]
1 2 3 4 0 1 2 3
5 6 7 4 5 6
8 9 7 8
0 9
*/
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
let r = 3;
let count = 0;
for(let a = 0; a < arr.length; a++){
document.write(arr[a] + " ");
if(r == count){
document.write("<br>");
r = r - 1;
count = 0;
} else {
count ++
}
}
</script>
배열4_문제09_가로세로합.html
<script>
/*
[문제]
배열a는 한 줄 이지만 아래와 같이 사각형으로 놓였다고 했을 때,
[1] a배열의 가로 합은 garo배열에 저장하시오.
[2] a배열의 세로 합은 sero배열에 저장하시오.
[정답]
garo = 10, 26, 42
sero = 15, 18, 21, 24
*/
let a = [1, 2, 3, 4,
5, 6, 7, 8,
9, 10,11,12];
let garo = [0, 0, 0];
let sero = [0, 0, 0, 0];
let totalA = 0;
let totalB = 0;
for(let x = 0; x < a.length; x++){
garo[parseInt(x / 4)] += a[x];
}
document.write(garo +"<br>")
for(let x = 0; x < a.length; x++){
sero[parseInt(x % 4)] += a[x];
}
document.write(sero)
/*
0 > 0 0 > 1 0 > 2 0 > 3
1 > 4 1 > 5 1 > 6 1 > 7
2 > 8 2 > 9 2 > 10 2 > 11
*/
</script>
배열4_문제10_두개밀기.html
<script>
/*
[문제]
배열a에 있는 값들을 배열b에 저장하려고 한다.
배열a의 값을 뒤에서부터 두 개씩 저장하시오.
[정답]
b = 7,7,3,3,1,1
*/
let a = [1, 3, 7];
let b = [0, 0, 0, 0, 0, 0];
let count = 0;
let c = 2;
for(let x = 0; x < b.length; x++){
b[x] = a[c]
count++;
if(count == 2){
c--;
count = 0;
}
}
document.write(b);
//--------------------------
let index = a.length - 1;
for(let i=0; i<b.length; i++) {
b[i] = a[index];
if(i % 2 == 1) {
index -= 1;
}
}
document.write(b + "<br>");
</script>
배열5_개념01.html
<script>
/*
[문제]
철수는 게임을 하고 있다.
monster배열은 게임의 적 4마리를 의미하고
숫자는 몬스터의 체력을 의미한다.
철수의 공격력은 5이다.
총 다섯번을 반복하면서
랜덤으로 몬스터 중 하나를 선택해서 공격한다.
모든 몬스터들을 공격한 후 몬스터들의 체력을 출력하시오.
단, 몬스터 체력은 0이 되면 더 이상 내려가지 않고,
공격횟수로 인정하지 않는다.
[예시]
0번째 몬스터 공격! : 4,7,8,6
0번째 몬스터 공격! : 0,7,8,6
0번째 몬스터 공격! : 체력이 0인 몬스터입니다. 다시 선택해주세요.
1번째 몬스터 공격! : 0,2,8,6
1번째 몬스터 공격! : 0,0,8,6
0번째 몬스터 공격! : 체력이 0인 몬스터입니다. 다시 선택해주세요.
2번째 몬스터 공격! : 0,0,3,6
*/
let monster = [9, 7, 8, 6];
let power = 5;
let count = 0;
while(true){
let index = Math.floor(Math.random() * monster.length)
document.write(index + "번째 몬스터 공격!!!!! : ");
if(monster[index] > 0 ){
if(monster[index] - power <= 0 ){
monster[index] = 0;
} else {
monster[index] -= power
}
document.write(monster + "<br>");
count++;
} else {
document.write("체력이 0인 몬스터입니다. 다시 선택해주세요.<br>");
}
if(count == 5){
document.write("턴 종료!");
break;
}
}
</script>
배열5_개념02_상품주문.html
<script>
/*
[문제]
item배열은 상품의 번호이다.
price배열은 상품의 가격이다.
order배열은 오늘 주문이 들어온 상품의 인덱스 번호이다.
오늘의 매출을 출력하시오.
[정답]
16100
*/
let item = [1001, 1002, 1003, 1004];
let price = [ 500, 1200, 4300, 2300];
let order = [0, 1, 3, 3, 2, 2, 1];
let total = 0;
for(let a = 0; a < order.length; a++){
total += price[order[a]]
}
document.write(total);
</script>
배열5_개념03_전부짝수.html
<script>
/*
[문제]
arr배열에 0~9사이의 랜덤 값을 4개 저장한 후 출력한다.
배열안의 값들이 모두 짝수면 true를 출력하고,
하나라도 짝수가 아니면 false를 출력한다.
단, 0은 짝수이다.
[예시]
4, 6, 2, 0 : true
5, 2, 0, 4 : false
*/
let arr = [];
let dex = true;
for(let a = 0 ; a < 4; a++){
let num = Math.floor(Math.random() * 10);
if(num % 2 != 0){
dex = false;
}
arr.push(num);
}
document.write(arr + " : " + dex);
</script>
배열5_개념04_셔플.html
<script>
/*
[문제]
1. 인덱스 2개를 랜덤(0~5)으로 저장하고 각 인덱스의 값을 교환한다.
2. 위 1번을 10회 반복하며 과정을 출력하시오.
[예시]
예) 1, 2 ==> 10,30,20,40,50,60 // 20 과 30이 교환된다.
예) 4, 1 ==> 10,50,20,40,30,60 // 50 과 30이 교환된다.
예) 3 3 ==> 10,50,20,40,30,60 // 같을 땐 아무일도안생긴다.
*/
let arr = [10, 20, 30, 40, 50];
for(let a = 0; a < 10; a++){
let index1 = Math.floor(Math.random() * arr.length);
let index2 = Math.floor(Math.random() * arr.length);
let temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
document.write(index1 + " " + index2 + " ==> " + arr + "<br>");
}
</script>
배열5_개념05_왼쪽밀기.html
<script>
/*
[문제]
arr배열의 값 중 0을 제외한 모든 값을
왼쪽으로 모으시오.
[정답]
arr = 2,3,4,5,0,0,0,0,0,0
*/
let arr = [0, 0, 2, 0, 3, 0, 4, 0, 0, 5];
let index = 0;
for(let a = 0; a < arr.length; a++){
if(arr[a] != 0){
arr[index] = arr[a];
arr[a] = 0;
index++;
}
}
document.write(arr);
</script>
배열5_개념06_가장큰수.html
<script>
/*
[문제]
arr배열에 -100~100 사이의 랜덤 값 5개 저장한다.
그 중 가장 큰 수와 가장 작은 수를 출력하시오.
[예시]
37, 53, 90, -82, -17
90
-82
*/
let arr = [];
let maxNum = -100;
let minNum = 100;
for(let i=0; i<5; i++) {
arr.push(Math.floor(Math.random() * 201) - 100);
if(maxNum < arr[i]) {
maxNum = arr[i];
}
if(minNum > arr[i]) {
minNum = arr[i];
}
}
document.write(arr + "<br>");
document.write(maxNum + "<br>");
document.write(minNum + "<br>");
//------------------------------------------------------
let i = 0;
while(i < 5) {
if(maxNum < arr[i]) {
maxNum = arr[i];
}
if(minNum > arr[i]) {
minNum = arr[i];
}
i += 1;
}
document.write(arr + "<br>");
document.write(maxNum + "<br>");
document.write(minNum + "<br>");
</script>
배열5_문제01_몬스터추가어택.html
<script>
/*
[문제]
철수는 게임을 하고 있다.
monster배열은 게임의 적 4마리를 의미하고 몬스터의 체력을 의미한다.
철수의 공격력은 5이다.
랜덤으로 몬스터 중 하나를 선택해서 공격하고,
이를 총 다섯 번 반복한다.
모든 몬스터를 공격한 후 몬스터들의 체력을 출력하시오.
단, 몬스터 체력은 0이 되면 더 이상 내려가지 않으며
공격한 몬스터의 양쪽에게는 1의 대미지를 추가로 가하게 된다.
[예시]
0번째 몬스터 공격! : 4,6,8,6
3번째 몬스터 공격! : 4,6,7,1
3번째 몬스터 공격! : 4,6,6,0
3번째 몬스터 공격! : 체력이 0인 몬스터입니다. 다시 선택해주세요.
1번째 몬스터 공격! : 3,1,5,0
0번째 몬스터 공격! : 0,0,5,0
*/
let monster = [9,7,8,6];
let power = 5;
count = 0;
while(true){
let num = Math.floor(Math.random() * monster.length);
document.write(num + "번째 몬스터 공격!!!!! : ")
if(monster[num] > 0){
if(monster[num] - power <= 0){
monster[num] = 0
} else {
monster[num] -= power;
}
if(num > 0 && monster[num - 1] > 0){
monster[num - 1] -= 1;
}
if(num < monster.length - 1 && monster[num + 1] > 0){
monster[num + 1] -= 1;
}
document.write(monster + "<br>");
count += 1;
} else {
document.write("체력이 0인 몬스터입니다. 다시 선택해주세요. <br>")
}
if(count == 5){
break;
}
}
</script>
배열5_문제02_일등.html
<script>
/*
[문제]
다음은 학생 번호와 점수의 한 셋트이다.
일등의 번호와 점수, 꼴등의 번호와 점수를 출력하시오.
[정답]
일등 = 1004번(98점)
꼴등 = 1002번(11점)
*/
let numberList = [1001, 1002, 1003, 1004, 1005];
let scoreList = [ 87, 11, 45, 98, 23];
let max = 0;
let min = 100;
let temp1 = 0;
let temp2 = 0;
for(let a = 0; a < scoreList.length; a++){
if(scoreList[a] > max){
max = scoreList[a]
temp1 = a;
}
if(scoreList[a] < min){
min = scoreList[a]
temp2 = a;
}
}
document.write("일등 = " + numberList[temp1] + " " + scoreList[temp1] + "<br>꼴등 = " + numberList[temp2] + " " + scoreList[temp2]);
</script>
배열5_문제03_전원합격.html
<script>
/*
[문제]
arr배열에 0 ~ 100사이의 랜덤값을 4개 저장한 후 출력한다.
배열의 값은 학생들의 성적이다.
60점이상이면 합격이다.
전원 합격하면, "상품"을 출력하고,
전원 탈락하면, "벌칙"을 출력하시오.
그 외는 배열만 출력하시오.
[예시]
100,89,68,84 : 상품
22,23,31,55 : 벌칙
40,23,46,89 : 40,23,46,89
*/
let arr = [];
let count = 0;
let count2 = 0;
for(let a = 0; a < 4; a++){
arr.push(Math.floor(Math.random() * 100) + 1);
if(arr[a] >= 60){
count ++;
} else {
count2 --;
}
}
document.write(arr + " : " )
if(count == 4){
document.write(" 당첨 ");
} else if (count2 == 4){
document.write(" 벌칙 ");
} else {
document.write(arr)
}
</script>
배열5_문제04_오른쪽밀기.html
<script>
/*
[문제]
arr배열의 값들 중 0을 제외하고
모든 값을 오른쪽으로 모으시오.
[결과]
arr = 0,0,0,0,0,0,2,3,4,5
*/
let arr = [0, 0, 2, 0, 3, 0, 4, 0, 0, 5];
let index = arr.length - 1;
for(let a = arr.length - 1; a >= 0; a--){
if(arr[a] != 0){
let temp = arr[index]
arr[index] = arr[a];
arr[a] = temp;
index -= 1;
}
}
document.write(arr);
</script>
배열5_문제05_상품여러개주문.html
<script>
/*
[문제]
item배열은 상품의 번호이다.
price배열은 상품의 가격이다.
item과 price는 한세트이다.
order배열은 오늘 주문이 들어온 상품의 인덱스 번호이다.
count배열은 order에서 주문한 상품들의 개수이다.
order 와 count는 한세트이다.
오늘의 매출을 출력하시오.
order : 0은 상품 1001을 의미하는 것이고,
count : 3은 1001상품을 3개 구매한것이 된다.
즉, 매출에 1500원을 추가한다.
위 식대로 남은 주문도 전부 계산하시오.
[정답]
44500
*/
let item = [1001, 1002, 1003, 1004];
let price =[500, 1200, 4300, 2300];
let order = [0, 1, 3, 3, 2, 2, 1];
let count = [3, 2, 2, 1, 3, 4, 3];
let total = 0;
for(let a = 0; a < order.length; a++){
total += price[order[a]] * count[a];
}
document.write(total);
</script>
배열5_문제06_복권만들기.html
<script>
/*
[문제]
lotto배열안에 1 또는 7을 랜덤으로 7개 추가 후 출력하시오.
단, 7의 개수는 3개만 추가하고, 1의 개수는 4개만 추가한다.
위에서 만든 복권을 판정한다.
7이 연속으로 3개면 "당첨"을 출력한다.
아니면 "꽝"을 출력한다.
[예시]
1,7,1,1,7,7,1 : 꽝
1,1,7,7,7,1,1 : 당첨
*/
let arr = [];
count7 = 0;
count1 = 0;
while(true){
let r = Math.floor(Math.random() * 2);
if(r == 0){
r = 7;
}
if(r == 7 && count7 < 3){
arr.push(r);
count7++
} else if
(r == 1 && count1 < 4){
arr.push(r);
count1++;
}
if(count7 + count1 == 7){
break;
}
}
document.write(arr + " <br>");
let temp = false;
let count = 0;
for(let a = 0; a < arr.length; a++){
if(arr[a] == 7){
count++;
if(count == 3){
temp = true;
}
} else {
count = 0;
}
}
if(temp){
document.write("당첨");
} else {
document.write("꽝");
}
</script>
배열5_문제07_데칼코마니.html
<script>
/*
[문제]
arr배열이 데칼코마니인지 구하시오.
데칼코마니이면 true를 출력 아니면 false 출력하시오.
데칼코마니란? 절반으로 나눴을 때 서로 값들이 대칭이면 데칼코마니이다.
[예시]
[1,5,4,4,5,1] true
[1,5,4,3,5,1] false
[정답]
true
*/
let arr = [1, 5, 4, 4, 5, 1];
let size = parseInt(arr.length / 2);
count = 0;
for(let a = 0; a < size; a ++){
//a = 0 arr.length - a - 1
if(arr[a] == arr[arr.length - a - 1]){
count ++
}
}
if ( count == size){
document.write(true);
} else {
document.write(false);
}
</script>
배열5_문제08_상품재고.html
<script>
/*
[문제]
item배열은 상품의 번호이다.
price배열은 상품의 가격이다.
count배열은 상품의 재고 개수이다.
item과 price, count는 한 세트이다.
order배열은 오늘 주문이 들어온 상품의 인덱스 번호이다.
단, 주문할 때마다 count 재고에서 하나씩 감소하고, 재고가 0이면 주문할 수 없다.
주문할 수 없을 때는 "주문 불가"를 출력하시오.
order의 주문을 토대로 오늘 매출을 구하시오.
count 리스트도 출력하시오.
[정답]
order = 0, count = 2,1,2,1
order = 1, count = 2,0,2,1
order = 3, count = 2,0,2,0
order = 3, 주문불가
order = 2, count = 2,0,1,0
order = 2, count = 2,0,0,0
order = 1, 주문불가
매출 = 12600
*/
let item = [1001, 1002, 1003, 1004];
let price = [500, 1200, 4300, 2300];
let count = [3, 1, 2, 1];
let order = [0, 1, 3, 3, 2, 2, 1];
let total = 0;
for(let a = 0; a < order.length; a++ ){
document.write("order = " + order[a] + ", ");
if(count[order[a]] > 0 ){
count[order[a]] -= 1;
total += price[order[a]];
document.write("count = " + count + "<br>");
} else {
document.write("주문불가<br>");
}
}
document.write("매출 = " + total);
</script>
배열6_개념01_배열삭제1.html
<script>
/*
배열 삭제를 위해 splice 함수를 이용한다.
: splice(인덱스, 개수)
*/
let arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
document.write("arr = " + arr + "<br>");
// [문제] 10 삭제
arr.splice(0, 1); // 0번째 인덱스부터 값 1개 삭제
document.write("10 삭제 = " + arr + "<br>"); // arr = 20,30,40,50,60,70,80,90,100
// [문제] 100 삭제
arr.splice(arr.length - 1, 1); // 8번째 인덱스부터 값 1개 삭제
document.write("100 삭제 = " + arr + "<br>"); // arr = 20,30,40,50,60,70,80,90
// [문제] 40, 50, 60 삭제
arr.splice(2, 3); // 2번째 인덱스부터 값 3개 삭제
document.write("40, 50, 60 삭제 = " + arr + "<br>"); // arr = 20,30,70,80,90
// [문제] 전체 삭제
arr.splice(0);
document.write("arr = " + arr + "<br>");
</script>
배열6_개념02_배열삭제2.html
<script>
/*
arr배열에서 20만 삭제하시오.
*/
let arr = [10, 20, 30, 20, 20, 20, 70, 80, 90, 100];
document.write("arr = " + arr + "<br>");
let index = 0;
for(let a = 0; a < arr.length; a++){
if(arr[a] == 20){
arr.splice(a , 1);
a--;
}
}
document.write("20 삭제 = " + arr);
</script>
배열6_개념03_랜덤삭제.html
<script>
/*
[문제]
[조건1] arr배열에 1~100사이의 랜덤 숫자 5개를 추가한다.
[조건2] 랜덤으로 위 값 중 한 개만 삭제 후 출력하시오.
[예시]
arr = 1, 43, 22, 77, 44
r = 3
arr = 1, 43, 22, 44
*/
let arr = [];
for(let a = 0; a < 5; a++){
arr.push(Math.floor(Math.random() * 100) + 1);
}
document.write("arr = " + arr + "<br>");
let r = Math.floor(Math.random() * arr.length);
document.write("r = " + r + "<br>");
arr.splice(r, 1);
document.write("arr = " + arr);
</script>
배열6_개념04_삽입.html
<script>
/*
[문제]
arr배열이 있을 때, 배열 사이에 값을 추가하고
나머지 값들은 뒤로 밀어내는 것을 삽입이라고 한다.
0~5 사이의 랜덤 숫자(=위치)를 저장하고,
arr배열 사이의 그 위치에 값 100을 삽입해 보시오.
[예시]
r = 3
arr = 10,34,56,100,8,43
*/
let value = 100;
let arr = [10, 34, 56, 8, 43];
let r = Math.floor(Math.random() * arr.length + 1);
document.write("랜덤 = " + r + "<br>");
if(arr.length - 1 == r){
arr.push(value);
} else {
arr.push(0);
for(let a = arr.length - 1 ; a > r ; a--){
arr[a] = arr[a-1];
}
arr[r] = value
}
document.write("arr = " + arr);
</script>
배열6_개념05_세트배열.html
<script>
/*
[문제]
arr배열은 학생 번호와 점수가 한 세트를 이루고 있다.
점수 총합과 평균을 출력하시오.
[정답]
총점 = 235
평균 = 58.75
*/
let arr = [1001, 40, 1002, 60, 1003, 65, 1004, 70];
let total = 0;
let avg = 0;
for(let a = 0; a < arr.length; a++){
if(a % 2 == 1){
total += arr[a]
}
}
let count = parseInt(arr.length / 2);
avg = total / count;
document.write("총점 = " + total + "<br>평균 = " + avg);
</script>
배열6_개념06_배열합치기.html
<script>
/*
[문제]
a배열의 값을 순차적으로 c배열에 저장하고,
그 후 b배열의 값을 c배열의 그 뒤부터 저장하시오.
[정답]
a = 10,20,30
b = 40,50,60
c = 10,20,30,40,50,60
*/
let a = [10, 20, 30];
let b = [40, 50, 60];
let c = [];
for(let x = 0; x < a.length; x++){
c.push(a[x]);
}
for(let x = 0; x < b.length; x++){
c.push(b[x]);
}
document.write("c = " + c);
</script>
배열6_개념07_무한반복.html
<script>
/*
[문제]
[조건1] arr배열에 1~100 사이의 랜덤숫자 5개를 추가한다.
[조건2] 단, 랜덤으로 홀수만 저장한다.
[예시]
arr = 13,43,3,17,33
*/
let arr = [];
let count = 0;
while(true){
let a = Math.floor(Math.random()* 100) + 1;
if(a % 2 == 1){
arr.push(a)
count++;
}
if(count == 5){
break;
}
}
document.write("<br>");
document.write("arr = " + arr);
</script>
배열6_개념08_랜덤숫자제한.html
<script>
/*
[문제]
arr배열 안에 1 또는 7을 랜덤으로 7개 추가 후 출력하시오.
단, 1의 개수는 4개만 추가하고,
7의 개수는 3개만 추가한다.
[예시]
정답 [ 1, 7, 7, 1, 1, 7, 1] // 개수가 맞다.
오답 [ 7, 1, 1, 7, 1, 1, 1] // 7이 두개이다.
*/
let arr = [];
let count7 = 0;
let count1 = 0;
while(true){
let num = Math.floor(Math.random() * 2);
if(num == 0){
num = 7;
}
if(num == 7 && count7 < 3){
arr.push(num);
count7++;
} else if (num == 1 && count1 < 4){
arr.push(num);
count1++;
}
if(count7 + count1 == 7){
break;
}
}
document.write(arr);
</script>
배열6_개념09_중복숫자체크.html
<script>
/*
[문제]
1~4 사이의 랜덤 숫자 4개를 저장한다.
단, 중복없는 숫자로 저장한다.
*/
let arr = [0, 0, 0, 0];
let check = [false, false, false, false];
let count = 0;
while(true){
let r = Math.floor(Math.random() * arr.length);
if(check[r] == false){
check[r] = true;
arr[count] = r + 1;
count++
}
if(count == arr.length){
break;
}
}
document.write(arr);
</script>
배열6_개념10_사탕넘기기.html
<script>
/*
[문제]
아래 candy배열은 각 병에 들어있는 사탕의 양이다.
사탕의 종류는 전부 다르고, 한 사람 당 한 병에서 25개씩 나눠주려 한다.
나눠 줄 수 있는 사람 수를 count배열에 저장하고, 나머지는 뒤로 넘겨준다.
나눠주고 남은 사탕은 뒤로 넘겨서 합쳐서 나누시오.
전부 나눠주고 난 candy와 count를 출력하시오.
[예시]
(1) 80 : 75 개를 3명에게 나눠주고 5개 남는다. 뒤로 넘겨서 53은 58이 된다.
(2) 58 : 50 개를 2명에게 나눠주고 8개 남는다. 뒤로 넘겨서 46은 54가 된다.
(3) 54 : 50 개를 2명에게 나눠주고 4개 남는다. 뒤로 넘겨서 23는 27이 된다.
(4) 27 : 25 개를 1명에게 나눠주고 2이 남는다.
[정답]
candy = 0, 0, 0, 2
count = 3, 2, 2, 1
*/
let candy = [80, 53, 46, 23];
let count = [];
for(let i=0; i<candy.length - 1; i++) {
let 몫 = parseInt(candy[i] / 25);
let 나머지 = candy[i] % 25;
count.push(몫);
candy[i] = 0;
candy[i + 1] += 나머지;
}
document.write(count + " <br> " + candy)
///////////////////////////////////
/*
for(let a = 0; a < candy.length; a++){
count[a] = parseInt(candy[a] / 25);
if(a < candy.length - 1){
candy[a + 1] += parseInt(candy[a] % 25);
candy[a] = 0;
} else {
candy[a] = parseInt(candy[a] % 25);
}
}
document.write("candy = " + candy + "<br>count = " + count);
*/
</script>
배열6_개념11_철수게임.html
<script>
/*
[문제]
철수는 마블 게임을 하고 있다.
map배열은 철수가 움직일 수 있는 공간을 배열로 표현한 것이다.
숫자 1은 철수의 현재 위치를 의미한다.
주사위(1~6)를 던져서 랜덤숫자만큼 1을 전진시킨다.
만약 1이 끝까지 도달하면 다시 맨 앞으로 이동해서 전진한다.
총 4회 반복하면서 철수의 위치를 출력하시오.
[예시]
(0) 시작
map = [1,0,0,0,0,0,0,0,0,0]
(1) 주사위 : 5
map = [0,0,0,0,0,1,0,0,0,0]
(2) 주사위 : 3
map = [0,0,0,0,0,0,0,0,1,0]
(3) 주사위 : 6
map = [0,0,0,0,1,0,0,0,0,0]
(4) 주사위 :4
map = [0,0,0,0,0,0,0,0,1,0]
*/
let map = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0];
document.write("시작 <br>map = " + map +"<br><br>");
let po = 0;
for(let a = 0; a < 4; a++){
let r = Math.floor(Math.random() * 6) + 1;
document.write("주사위 : " + r + "<br>");
map[po] = 0;
po += r;
po %= map.length;
map[po] = 1;
document.write("map = " + map + "<br><br>");
}
</script>
배열6_개념12_기념일.html
<script>
/*
[문제]
철수와 영희는 3월 3일에 만났다.
철수는 영희와 100일 기념일에 축하 파티를 하려 한다.
만난 지 100일 뒤는 몇 월 며칠인지 구하시오.
단, 윤년은 계산하지 않으며, 시작일은 포함시키지 않는다.
[정답]
6월 11일
*/
let monthList = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let month = 3;
let day = 3;
let total = 0;
for(let a = 0; a < month - 1 ; a++){
total += monthList[a];
}
total += day;
total += 100;
let start = 0;
let end = 0;
for(let a = 0; a < monthList.length; a++){
end = total;
total -= monthList[a];
if(total < 0){
start = a + 1;
break;
}
}
document.write(start + " 월 " + end + " 일 ")
</script>
배열6_문제01_여러개삭제.html
<script>
/*
[문제]
아래 arr배열에는 순서대로 값이 저장되어있다.
1~100사이의 랜덤 숫자 하나를 저장 후,
랜덤 값보다 작은 값은 전부 arr배열에서 삭제하시오.
[예시]
r = 47
arr = 50,60
*/
let arr = [10, 20, 30, 40, 50, 60];
let r = Math.floor(Math.random() * 100) + 1;
document.write("r = " + r + "<br>");
for(let a = 0; a < arr.length; a++){
if(arr[a] < r){
arr.splice(a , 1)
a -= 1;
}
}
document.write("arr = " + arr );
</script>
배열6_문제02_순서삽입.html
<script>
/*
[문제]
아래 arr배열은 순서대로 값이 저장되어있다.
1~70사이의 랜덤숫자 하나를 저장 후,
arr배열의 값들 사이에 저장하려고 한다.
저장 조건은 arr배열의 바로 앞의 값 보다는 크고
바로 뒤의 값 보다는 이하인 위치에 삽입 후 출력하시오.
[예시1]
r = 5
arr = 5,10,20,30,40,50,60
[예시2]
r = 15
arr = 10,15,20,30,40,50,60
[예시3]
r = 65
arr = 10,20,30,40,50,60,65
*/
let arr = [10, 20, 30, 40, 50, 60];
let r = Math.floor(Math.random() * 70) + 1;
document.write("r = " + r + "<br>");
let index = 0;
if(arr[0] >= r){
index = 0;
} else if (
arr[arr.length-1] <= r){
index = arr.length;
} else {
for(let a = 0; a < arr.length -1; a++){
if(arr[a] <= r && arr[a + 1] >= r ){
index = a + 1;
break;
}
}
}
document.write("index = " + index + "<br>");
arr.push(0);
for(let a = arr.length - 1; a >index; a-- ){
arr[a] = arr[a - 1];
}
arr[index] = r;
document.write("arr = " + arr);
</script>
배열6_문제03_세트일등.html
<script>
/*
[문제]
arr배열은 학생 번호와 점수 한 세트를 이루고 있다.
일등 학생의 번호와 점수를 출력하시오.
[정답]
번호 = 1002
점수 = 82
*/
let arr = [1001, 40, 1002, 82, 1003, 65, 1004, 70];
let max = 0;
let num = 0;
for(let a = 0; a < arr.length; a++){
if(a % 2 == 1){
if(max < arr[a]){
max = arr[a];
num = arr[a - 1];
}
}
}
document.write("번호 = " + num + "<br>점수 = " + max);
</script>
배열6_문제04_세트삭제.html
<script>
/*
[문제]
arr배열은 학생 번호와 점수 한 세트를 이루고 있다.
0~7 사이의 랜덤 숫자를 저장하고,
해당 위치의 학생 번호와 그 점수를 삭제하시오.
[예시1]
r = 3
arr = 1001,40,1003,65,1004,70
[예시2]
r = 4
arr = 1001,40,1002,82,1004,70
*/
let arr = [1001, 40, 1002, 82, 1003, 65, 1004, 70];
let r = Math.floor(Math.random() * 8);
r = 4;
document.write("r = " + r + "<br>");
if(r % 2 == 1){
arr.splice(r - 1, 2);
} else {
arr.splice(r, 2);
}
document.write(arr);
</script>
배열6_문제05_교차합치기.html
<script>
/*
[문제]
a의 값과 b의 값을 교차로 c에 추가하시오.
규칙은 아래와 같다.
c = [10]
c = [10,40]
c = [10,40,20]
c = [10,40,20,50]
c = [10,40,20,50,30]
c = [10,40,20,50,30,60]
[정답]
c = [10,40,20,50,30,60]
*/
let a = [10, 20, 30];
let b = [40, 50, 60];
let c = [];
for(let x = 0; x < a.length; x++){
c.push(a[x]);
c.push(b[x]);
}
document.write(c);
</script>
배열6_문제06_나눠주기.html
<script>
/*
[문제]
c배열 값의 절반을 a배열에 추가한 후,
나머지 절반은 b배열에 추가하시오.
[정답]
a = [10,20,30]
b = [40,50,60]
*/
let c = [10,20,30,40,50,60];
let a = [];
let b = [];
let size = c.length /2;
for(let x = 0; x < c.length; x++){
if(x < size){
a.push(c[x]);
} else{
b.push(c[x]);
}
}
document.write(" a = " + a + "<br>b = " + b);
</script>
배열6_문제07_교차나눠주기.html
<script>
/*
[문제]
c배열의 값을 a배열에 한번, b배열에 한번
교차로 추가하시오.
[정답]
a = [10,30,50]
b = [20,40,60]
*/
let c = [10,20,30,40,50,60];
let a = [];
let b = [];
for(let x = 0; x < c.length; x++){
if(x % 2 == 0){
a.push(c[x]);
} else {
b.push(c[x]);
}
}
document.write("a = " + a + "<br>b = " + b);
</script>
배열6_문제08_물건채우기.html
<script>
/*
[문제]
철수는 편의점에서 아르바이트를 하고 있다.
오늘 장사가 잘돼서 라면이 많이 판매되었다.
라면 진열장에 라면들이 전부 채워질 수 있도록 라면을 채워보자.
라면 진열장은 한 칸에 최대 5개씩 진열할 수 있으며,
재고는 6개 밖에 없고 앞에서부터 순차적으로 채워 넣는다.
재고를 다 채웠을 때 라면 진열장의 모습을 출력하시오.
[정답]
list = [3,5,2,1,2]
count = 6
1번은 3이므로 2개를 추가해 ==> -2 4
2번은 5이므로 0개를 추가해 ==> -0 0
3번은 2이므로 3개를 추가해 ==> -3 1
4번은 1이므로 4개를 추가해야되지만 재고가 1개밖에없어서 -1
최종으론 [5,5,5,2,2] 가된다.
*/
let list = [3, 5, 2, 1, 2];
let count = 6;
for(let a = 0; a < list.length; a++){
let temp = 0;
if(list[a] < 5 && count > 0){
temp = 5 - list[a];
if(temp <= count){
count -= temp;
list[a] += temp;
} else {
list[a] += count;
count = 0
break;
}
}
}
document.write(list)
</script>
배열6_문제09_밀린답안지.html
<script>
/*
[문제]
철수는 수학 시험을 보았다.
철수는 실수로 답을 한 칸씩 밀려 적었다.
철수가 원래대로 마킹했더라면 몇 점인지 구하시오.
한 문제당 20점이다.
정답 = [1,4,3,3,2]
철수가 제출한 답안지 = [0,1,4,3,2]
원래 제출하고 싶었던 답안지 = [1,4,3,2,0]
[정답]
60점
*/
let 정답 = [1, 4, 3, 3, 2];
let 밀린답 = [0, 1, 4, 3, 2];
let count = 0;
for(let a = 0; a < 밀린답.length - 1; a++){
밀린답[a] = 밀린답[a + 1]
}
밀린답[밀린답.length - 1] = 0;
document.write(밀린답 +"<br>");
for(let a = 0; a < 밀린답.length - 1; a++){
if(정답[a] == 밀린답[a]){
count++;
}
} let score = 20 * count;
document.write(score);
</script>
배열6_문제10_도서연체.html
<script>
/*
[문제]
철수는 도서관에서 책을 한 권 빌렸다.
빌린 날짜는 2022년 2월 25일이고, 대여 일수는 10일이다.
도서가 연체되면 연체 비용은 하루에 100원이다.
오늘은 2022년 3월 10일 이라고 할 때,
지급해야 하는 비용은 얼마인지 구하시오.
단, 윤년은 계산하지 않는다.
[정답]
300원
*/
let monthList = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let month = 2;
let month2 = 3;
let day = 25;
let day2 = 10;
let rent = 10;
let temp1 = 0;
let temp2 = 0;
let cost = 100;
for(let a = 0 ; a < month - 1; a++ ){
temp1 += monthList[a];
}
temp1 += day;
temp1 += rent;
for(let a = 0 ; a < month2 - 1; a++){
temp2 += monthList[a];
}
temp2 += day2;
let rs = cost * (temp2 - temp1);
document.write(rs);
</script>
배열6_문제11_연속빈칸.html
<script>
/*
[문제]
철수네 공장의 창고를 아래 arr배열로 표현하였다.
1은 물건이 차 있는 상황이고 0은 비어있는 상황이다.
랜덤(1~5)으로 물건 크기를 입력받고 창고에 저장 후 출력하시오.
저장할 수 없으면 "창고 부족"이라고 출력하시오.
예를 들어 랜덤이 3이 나오면 연속으로 0이 3개 있어야 한다.
[예시1]
r = 3
arr = [0, 1, 0, 0, 1, 1, 1, 1, 0, 1]
[예시2]
r = 5
"창고부족"
*/
let arr = [0, 1, 0, 0, 1, 0, 0, 0, 0, 1];
let r = Math.floor(Math.random() * 5 )+ 1;
document.write("r = " + r + "<br>");
let index = -1;
let count = 0;
for(let a = 0; a < arr.length; a++){
if(arr[a] == 0){
count++;
if(count == r){
index = a;
break;
}
} else {
count = 0;
}
}
document.write("index = " + index + "<br>");
if(index >= 0){
for(let a = 0; a < r; a++){
arr[index - a] = 1;
}
} else {
document.write("창고가 부족합니다<br>");
}
document.write(arr + "<br>");
</script>
배열6_문제12_철수게임.html
<script>
/*
[문제]
철수는 철수의 마블 게임을 개발 중이다.
map1과 map2는 게임 스테이지를 표현한다.
숫자 1은 철수의 위치이다.
주사위는 1~6까지 있고 주사위 2개를 던저서 그 합만큼 앞으로 이동한다.
map1의 끝에 도달하면 map2로 이동해서 전진하고,
map2의 끝에 도달하면 다시 map1로 이동해서 전진한다.
주사위를 총 4번 반복하고 철수의 위치를 출력하시오.
[예시]
(1) 시작
map1 = [1,0,0,0,0,0,0,0,0,0]
map2 = [0,0,0,0,0,0,0,0,0,0]
(2) 주사위 3 , 5 : 8
map1 = [0,0,0,0,0,0,0,0,1,0]
map2 = [0,0,0,0,0,0,0,0,0,0]
(3) 주사위 2 , 1 : 3
map1 = [0,0,0,0,0,0,0,0,0,0]
map2 = [0,1,0,0,0,0,0,0,0,0]
(4) 주사위 6 , 1 : 7
map1 = [0,0,0,0,0,0,0,0,0,0]
map2 = [0,0,0,0,0,0,0,0,1,0]
(5) 주사위 3 , 3 : 6
map1 = [0,0,0,0,1,0,0,0,0,0]
map2 = [0,0,0,0,0,0,0,0,0,0]
*/
let map1 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let map2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
document.write("(1) 시작<br>");
document.write("map1 = " + map1 + "<br>map2 = " + map2 + "<br><br>");
let turn = true;
let index = 0;
let size = map1.length;
for(let a = 0; a < 4; a++){
let dice1 = Math.floor(Math.random()* 6) + 1;
let dice2 = Math.floor(Math.random()* 6) + 1;
let total = dice1 + dice2;
document.write(dice1 + " , " + dice2 + " : " + total + "<br>");
if(turn){
map1[index] = 0;
} else {
map2[index] = 0;
}
index += total;
if(index >= size){
turn = !turn;
index %= size;
}
if(turn){
map1[index] = 1;
} else {
map2[index] = 1;
}
document.write("map 1 = " + map1 + "<br>map2 = " + map2 + "<br><br>");
}
</script>
배열6_문제13_홀수모으기.html
<script>
/*
[문제]
[1] 랜덤숫자 1~9 다섯 개를 arr배열에 추가한다.
[2] 그 숫자 중 홀수만 하나로 모아서 숫자로 만든다. (더하기가 아니다.)
[3] 그 숫자의 두 배를 출력한다.
[예시]
2 5 3 4 6 이 랜덤으로 저장되었다고 가정했을 때,
홀수는 5, 3 이므로 합치면 53이 된다.
53의 두 배는 106이다.
*/
let arr = [];
let count = 0;
let temp =[];
for(let a = 0; a < 5; a++){
arr.push(Math.floor(Math.random() * 9) + 1);
}
document.write("arr = " + arr + "<br>");
for(let a = 0; a < 5; a++){
if(arr[a] % 2 == 1){
temp.push(arr[a]);
}
}
document.write("temp = " + temp + "<br>")
</script>
배열6_문제14_세트학생정보.html
<script>
/*
[문제]
아래 arr배열은 3명의 학생 데이터이다.
각 학생은 3개씩 데이터로 표현한다.
맨 앞은 번호, 그 다음은 국어점수, 그 다음은 수학점수이다.
1001번, 국어 100, 수학 20
1002번, 국어 32, 수학 54
1003번 국어 34, 수학 65
[1] 전체 평균을 출력하시오. (소수점 두자리까지 출력)
[2] 국어 1등 학생 정보를 출력하시오.
[3] 수학 1등 학생 정보를 출력하시오.
[4] 전체 1등 학생 정보를 출력하시오.
[정답]
평균 = 101.67점
국어 1등 = 1001번(100점)
수학 1등 = 1003번(65점)
전교 1등 = 1001번(120점)
*/
let arr = [1001, 100, 20, 1002, 32, 54, 1003, 34, 65];
let kor = 0;
let korid = 0;
let Math = 0;
let Mathid = 0;
let total = 0;
let totalid = 0;
let sum = 0;
for(let a = 0 ; a < arr.length; a++){
if(a % 3 == 0){
sum += arr[a + 1] + arr[a + 2];
if(arr[a + 1] + arr[a + 2] > total){
total = arr[a + 1] + arr[a + 2];
totalid = a;
}
if(arr[a + 1] > kor){
kor = arr[a+1];
korid = a;
}
if(arr[a + 2] > Math){
Math = arr[a+2];
Mathid = a;
}
}
}
document.write("평균 = " + (sum / 3).toFixed(2) + "<br>");
document.write("국어 1등 = " + arr[korid] + "번(" + kor + "점)<br>");
document.write("수학 1등 = " + arr[Mathid] + "번(" + Math + "점)<br>");
document.write("전교 1등 = " + arr[totalid] + "번(" + total + "점)<br>");
</script>
배열6_문제15_빙고.html
<script>
/*
[문제]
아래 arr배열은 3 x 3의 빙고 판을 표현한 것이다.
1이 연속으로 3개이면, 빙고이다.
즉 아래 빙고 판은 빙고가 2개이다.
판정을 통해 빙고가 2개가 나오도록 식을 작성하시오.
*/
let arr = [ 0, 0, 1,
0, 1, 1,
1, 0, 1];
let count = 0;
for(let a = 0; a < arr.length; a++){
if(a % 3 == 0){
if(arr[a] == 1 && arr[a + 1] == 1 && arr[a + 2] == 1){
count ++;
}
}
}
for(let a = 0 ; a < 3; a++){
if(arr[a] == 1 && arr[a + 3] == 1 && arr[a + 6] == 1){
count ++;
}
}
if(arr[0] == 1 && arr[4] == 1 && arr[8] == 1){
count++;
}
if(arr[2] == 1 && arr[4] == 1 && arr[6] == 1){
count++;
}
document.write(count);
</script>
배열6_문제16_기억력게임.html
<script>
/*
[문제]
1. 같은 숫자가 적혀있는 카드 2장씩 5세트가 있다. (총10장)
2. front는 카드를 엎어놓은 상태를 뜻한다.
3. 먼저 front를 셔플한다.
4. front에 있는 카드 2개를 랜덤으로 선택한다. (마우스가없으므로 인덱스로 선택)
5. 선택한 카드 2장의 내용이 같으면 back에 복사해서 맞춘 걸 표시한다.
back에 모든 글자가 채워지면 게임은 종료된다.
6. 같은 인덱스 선택할 수 없다.
7. 이미 선택한 자리를 또 선택할 수 없다.
[예시]
2, 1 : 선택한 두 카드의 값이 일치하지 않습니다.
back = 0,0,0,0,0,0,0,0,0,0
6, 7 : back = 0,0,0,0,0,0,50,50,0,0
1, 0 : 선택한 두 카드의 값이 일치하지 않습니다.
back = 0,0,0,0,0,0,50,50,0,0
3, 7 : 이미 선택한 위치입니다!
back = 0,0,0,0,0,0,50,50,0,0
...
5, 2 : back = 0,10,20,30,30,20,50,50,10,0
7, 7 : 동일한 위치를 선택했습니다!
back = 0,10,20,30,30,20,50,50,10,0
0, 9 : back = 40,10,20,30,30,20,50,50,10,40
front = 40,10,20,30,30,20,50,50,10,40
back = 40,10,20,30,30,20,50,50,10,40
*/
let front = [10, 10, 20, 20, 30, 30, 40, 40, 50, 50];
let back = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let temp = 0 ;
for(let a = 0 ; a < front.length; a++){
let index1 = Math.floor(Math.random() * front.length);
let index2 = Math.floor(Math.random() * front.length);
temp = front[index1];
front[index1] = front[index2];
front[index2] = temp;
}
document.write(front); // 셔플
let count = 0;
while(true){
let index1 = Math.floor(Math.random() * front.length);
let index2 = Math.floor(Math.random() * front.length);
if(index1 == index2){
document.write("동일한 위치를 선택했습니다!!<br>");
document.write("back = " + back + "<br>")
}
else if(index1 != index2 && back[index1] == 0 && back[index2] == 0){
if(front[index1] == front[index2]){
back[index1] = front[index1];
back[index2] = front[index2];
document.write("정답!!<br>");
document.write("back = " + back + "<br>");
count ++;
}
else {
document.write("선택한 두 카드의 값이 일치하지 않습니다.<br>");
document.write("back = " + back + "<br>");
}
} else {
document.write("이미 선택한 위치입니다!!<br>");
document.write("back = " + back + "<br>");
}
if(count == 5){
document.write("종료<br>")
document.write("back = " + back + "<br>")
document.write("front = " + front + "<br>")
break;
}
}
</script>