웹개발 교육/JavaScript

[11일] JavaScript (5) - 배열, 연습문제

2022. 8. 9. 18:45
목차
  1. 배열 Array
  2. 배열 메소드(함수)
  3. toSring(), length, join()
  4. pop(), push()
  5. shift(), unshift()
  6. splice()
  7. concat()
  8.  정렬
  9. 1. 문자형
  10. 2. 숫자형
  11. 연습문제
  12. 문제 1
  13. 문제 2
  14. 문제 3
  15. 문제 4
  16. 문제 5
  17. 성적 프로그램 만들기

배열 Array

연속성 자료형, 열거형, 컬렉션

하나의 변수에 1개 이상의 값을 저장할 수 있는 공간

element, 요소, 원소 (노란색 박스)

index, 순서, 색인 (0부터 시작해서 1씩 증가한다)

 

let kor = [];  // 배열 선언
kor[0] = 10;   // 배열 요소의 인덱스는 0부터 시작한다
kor[1] = 20;   // 배열 요소의 인덱스는 1씩 증가한다
kor[2] = 30;
document.write(kor[0]);
document.write(kor[1]);
document.write(kor[2]);
document.write("<hr>");

 

let names = [];
names[0] = "무궁화";
names[1] = "개나리";
names[2] = "진달래";
document.write(names[0]);
document.write(names[1]);
document.write(names[2]);
document.write("<hr>");

 

// 배열 선언
// let points = [];           // Good
// let points = new Array();  // Bad
// 배열 선언 및 초기화
let points = [40, 100, 25, 3, 7];
document.write(points[0]);  //40
document.write(points[1]);  //100
document.write(points[2]);  //25
document.write(points[3]);  //3
document.write(points[4]);  //7
document.write("<hr>");

document.write(points.length);  //배열 요소의 갯수 5
document.write("<hr>");
document.write(points);         //배열 요소 전체 40, 100, 25, 3, 7

 

for(let i=0; i<points.length; i=i+1){
    document.write(points[i]);
} //for end

 

let fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6]="Lemon";
document.write(fruits.length);  // 배열 요소의 갯수 7
document.write(fruits[6]);      // Lemon
document.write(fruits[4]);      // undefined
document.write(fruits[5]);      // undefined
document.write(fruits[8]);      // undefined
document.write("<hr>");

fruits[8]="kiwi";
document.write(fruits.length);  // 배열 요소의 갯수 9

 

 

배열 메소드(함수)

toSring(), length, join()

let fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits);               // Banana,Orange,Apple,Mango
document.write("<hr>");

document.write(fruits.toString());    //"Banana,Orange,Apple,Mango"
document.write("<hr>");

document.write("#"+fruits.toString()+"#");  //#은 의미 없음. 문자열이라는 표기하려고. //#Banana,Orange,Apple,Mango#
document.write("<hr>");

document.write(fruits.length);               // 4 배열 요소의 갯수
document.write("<hr>");

document.write(fruits.toString().length);    // 25 문자열 변환 후 글자 갯수
document.write("<hr>");

document.write(fruits.join("*"));            // Banana*Orange*Apple*Mango
document.write("<hr>");

 

 

pop(), push()

fruits.pop()                  // 배열 마지막 요소 제거
document.write(fruits);       //"Banana,Orange,Apple"
document.write("<hr>");

fruits.push("Kiwi");          // 배열 마직막 요소 추가
document.write(fruits);       // "Banana,Orange,Apple,Kiwi"
document.write("<hr>");

 

shift(), unshift()

fruits.shift();               // 배열 맨 앞 요소 제거
document.write(fruits);       // Orange,Apple,Kiwi
document.write("<hr>");
            
fruits.unshift("Lemon");      // 배열 맨 앞 요소 추가
document.write(fruits);       // Lemon,Orange,Apple,Kiwi
document.write("<hr>");

 

splice()

fruits.splice(0, 2);          // 0번째부터 (2-1)번째까지 제거
document.write(fruits);       // "Apple,Kiwi"

 

concat()

//배열 요소 합치기
let arr1 = ["손흥민", "김연아"];
let arr2 = ["무궁화", "개나리", "진달래"];
let arr3 = ["국어", "영어"];
let arr4 = arr1.concat(arr2, arr3);

document.write(arr4);         // 손흥민,김연아,무궁화,개나리,진달래,국어,영어
document.write("<hr>");
document.write(arr4.length);  // 7
document.write("<hr>");

 

 

 정렬

  • 어떤 Key값을 기준으로 순서대로 재배치
  • 정렬 방식 : insertion sort (삽입 정렬), selection sort (선택 정렬), bubble sort, ~~~
  • 정렬 유형
  1. 오름차순(Ascending. ASC) : 1->10, A->Z, a->z
  2. 내림차순(Descending. DESC)

 

1. 문자형

fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.sort();            // 배열 요소 오름차순 정렬
document.write(fruits);   // Apple,Banana,Mango,Orange
document.write("<hr>");

fruits.reverse();         // 배열 요소 내림차순 정렬
document.write(fruits);   // Orange,Mango,Banana,Apple
document.write("<hr>");

 

2. 숫자형

let points = [40, 100, 1, 5, 25, 10];

points.sort(function(a, b){return a - b});       // sort()만 쓰면 1,10,100,25,40,5 이렇게 정렬됨
document.write(points);   // 오름차순 1, 5, 10, 25, 40, 100
document.write("<hr>");

points.sort(function(a, b){return b - a});
document.write(points);   // 내림차순 100, 40, 25, 10, 5, 1
document.write("<hr>");

 

 

연습문제

let num = [7, 8, -9, 5, 6];
let size = num.length; //5

문제 1

//문1)배열 요소의 전체 합을 구하시오
let sum =0;   // 전체 합
for (let i=0; i<num.length; i=i+1) {
    sum = num[i] + sum                
}
document.write(sum);   // 17
document.write("<hr>");
document.write("<hr>");

// 풀이 예시
// 1)
document.write(num[0]+num[1]+num[2]+num[3]+num[4]);
document.write("<hr>");

// 2)
let hap = 0;
for(let i=0; i<size; i=i+1){
    hap = hap + num[i];
} // for end
document.write(hap);
document.write("<hr>");

 

문제 2

//문2)음수의 갯수를 구하시오
let negative = 0;
for (let j=0; j<num.length; j=j+1) {
    if (num[j]<0) {
        negative = negative + 1
    }
}
document.write("음수의 갯수 : " + negative);   // 1
document.write("<hr>");
document.write("<hr>");

// 풀이 예시
/*
    7<0     if(num[0]<0)
    8<0     if(num[1]<0)
    -9<0    if(num[2]<0)    count=count+1
    5<0     if(num[3]<0)
    6<0     if(num[4]<0)
*/

let count = 0;
for(let i=0; i<size; i=i+1) {
    if(num[i]<0){
        count=count+1
    } //if end
} //for end

document.write("음수의 갯수 : " + negative);
document.write("<hr>");

 

문제 3

//문3)최대값, 최소값을 각각 구하시오
let max = 0;
max = num[0]>num[1] ? num[0] : num[1];
max = max>num[2] ? max : num[2];
max = max>num[3] ? max : num[3];
max = max>num[4] ? max : num[4];

let min = 0;
min = num[0]<num[1] ? num[0] : num[1];
min = min<num[2] ? min : num[2];
min = min<num[3] ? min : num[3];
min = min<num[4] ? min : num[4];
document.write("최대값 : " + max);
document.write("<hr>");
document.write("최솟값 : " + min);
document.write("<hr>");
document.write("<hr>");

// 풀이 예시
// 1)
document.write("최대값 : " + Math.max(...num));
document.write("<hr>");
document.write("최솟값 : " + Math.min(...num));
document.write("<hr>");

// 2)내림차순 정렬한 후, 최대값 구하기
// num.sort(function(a, b){return b - a});
// document.write("최대값 : " + num[0]);         //최대값
// document.write("<hr>");
// document.write("최솟값 : " + num[size-1]);    //최소값
// document.write("<hr>");

// 3)
let max2=num[0];   //최대값
let min2=num[0];   //최소값
/*
    7<7     if(max<num[0])
    7<8     if(max<num[1])      max2=num[1]
    8<-9    if(max<num[2])
    8<5     if(max<num[3])
    8<6     if(max<num[4])
*/

for(let i=0; i<size; i=i+1){
    if(max2<num[i]) max2=num[i];                
    if(min2>num[i]) min2=num[i];
} //for end
document.write("최대값 : " + max2);
document.write("<hr>");
document.write("최소값 : " + min2);
document.write("<hr>");

 

문제 4

//문4)num[4]요소의 등수를 구하시오
let grade = 1;
for (let l=0; l<num.length; l=l+1) {
    if(num[4] < num[l]) {
        grade = grade + 1;
    }
}
document.write(grade + "등");    // 3등
document.write("<hr>");
document.write("<hr>");

// 풀이 예시
/*
    6<7     if(num[4]<num[0])   r=r+1
    6<8     if(num[4]<num[1])   r=r+1
    6<-9    if(num[4]<num[2])
    6<5     if(num[4]<num[3])
    6<6     if(num[4]<num[4])
*/

let r=1;
for(let i=0; i<size; i=i+1){
    if(num[4]<num[i]){
        r=r+1;
    } //if end
} //for end

document.write("num[4] 요소의 등수 : " + r);
document.write("<hr>");

 

문제 5

//문5) num배열 요소의 각각의 등수를 모두 구하시오
// 8이 1등, 7이 2등 ...
let number = 0;
let eachgrade = 0;
num.sort(function(a, b){return b - a});    // 8, 7, 6, 5, -9
            
for (let m=0; m<num.length; m=m+1) {
    number = num[m];
    eachgrade = m + 1;
    document.write(number + " : " + eachgrade + "등");  // 8 : 1등, 7 : 2등, 6 : 3등, 5 : 4등, -9 : 5등
    document.write("<hr>");
}

// 풀이 예시
/*
    7<7     if(num[0]<num[0])
    7<8     if(num[0]<num[1])   rank[0]=rank[0]+1
    7<-9    if(num[0]<num[2])
    7<5     if(num[0]<num[3])
    7<6     if(num[0]<num[4])
    8<7     if(num[1]<num[0])
    8<8     if(num[1]<num[1])
    8<-9    if(num[1]<num[2])
    8<5     if(num[1]<num[3])
    8<6     if(num[1]<num[4])
    -9<7    if(num[2]<num[0])   rank[2]=rank[2]+1
    -9<8    if(num[2]<num[1])   rank[2]=rank[2]+1
    -9<-9   if(num[2]<num[2])
    -9<5    if(num[2]<num[3])   rank[2]=rank[2]+1
    -9<6    if(num[2]<num[4])   rank[2]=rank[2]+1
*/

let rank=[1, 1, 1, 1, 1];
for(let i=0; i<size; i=i+1){
    for(let j=0; j<size; j=j+1){
        if(num[i]<num[j]){
            rank[i]=rank[i]+1
        } //if end
    } //for end
} //for end
document.write("num배열 요소의 각 등수 : " + rank);

 

성적 프로그램 만들기

<body>
    
    <h3>성적 프로그램</h3>
    <div id="demo"></div>
    <script>
        //문) 5명의 학생을 대상으로 평균, 과락, 평균10점당 * 한개씩, 장학생을 구한후
        //    결과값을 표작성해서 id=demo에 출력하시오
        /*
            출력결과
            --------------------------------------------------------
            이름   국어 영어 수학 평균 등수   결과
            --------------------------------------------------------
            라일락 100  100  100  100  1    합격   ********** 장학생
            진달래  20   50   30   33  5    불합격 ***
            개나리  90   95   90   91  2    합격   *********
            무궁화  70   80   60   70  4    합격   *******
            홍길동  35  100  100   78  3    재시험 *******
            --------------------------------------------------------
        */
        let uname= ["라일락","진달래","개나리","무궁화","홍길동"];
        let kor  = [100, 50, 95, 80, 60];
        let eng  = [100, 55, 95, 85, 40];
        let mat  = [100, 60, 35, 90, 30];
        let size = uname.length;   //5
        
        // 평균 구하기
        let aver = [];
        for (let a=0; a<kor.length; a=a+1) {
            aver[a] = parseInt((kor[a]+eng[a]+mat[a])/3)
        }
        // document.write(aver);  // 100, 55, 75, 85, 43
        
        // 등수 구하기
        let rank = [1, 1, 1, 1, 1];
        for (let a=0; a<aver.length; a=a+1) {
            for (let b=0; b<aver.length; b=b+1) {
                if (aver[a]<aver[b]) {
                    rank[a] = rank[a] + 1;
                } //if end
            } //for end
        } //for end
        // document.write(rank);   // 1, 4, 3, 2, 5
        
        // 합불 구하기
        let pass = [];
        for (let a=0; a<aver.length; a=a+1) {
            if (aver[a]>=70) {
                if (kor[a]<40 || eng[a]<40 || mat[a]<40) {
                    pass[a] = "재시험";
                } else {
                    pass[a] = "합격";
                }
            } else {
                pass[a] = "불합격";
            }                      
        }
        // document.write(pass);       // 합격, 불합격, 재시험, 합격, 불합격
        
        // 별점
        let star = [];
        let starcnt = "";
        for (let b=0; b<aver.length; b=b+1) {
            for (let a=0; a<Math.floor((aver[b]/10)); a=a+1) {
                starcnt = starcnt + "*";                
            }
            star[b] = starcnt;
            starcnt = "";
        }
        // document.write(star);            // **********, *****, *******, ********, ****
        
        // 장학생 여부
        let scholar = [];
        for (let a=0; a<aver.length; a=a+1) {
            if(aver[a]>=95) {
                scholar[a] = "장학생";
            } else {
                scholar[a] = "";
            }
        }
        document.write(scholar);           // 장학생,,,,
        
        // 표 그리기
        let result = "";    // 결과값
        result = result + "<table border=1>"
            result = result + "<tr>"
                result = result + "<th>이름</th>"
                result = result + "<th>국어</th>"
                result = result + "<th>영어</th>"
                result = result + "<th>수학</th>"
                result = result + "<th>평균</th>"
                result = result + "<th>등수</th>"
                result = result + "<th colspan=3>결과</th>"
            result = result + "</tr>"
            result = result + "<tr>"
                result = result + "<td>" + uname[0] + "</td>"
                result = result + "<td>" + kor[0] + "</td>"
                result = result + "<td>" + eng[0] + "</td>"
                result = result + "<td>" + mat[0] + "</td>"
                result = result + "<td>" + aver[0] + "</td>"
                result = result + "<td>" + rank[0] + "</td>"
                result = result + "<td>" + pass[0] + star[0] + scholar[0] + "</td>"
            result = result + "</tr>"
            result = result + "<tr>"
                result = result + "<td>" + uname[1] + "</td>"
                result = result + "<td>" + kor[1] + "</td>"
                result = result + "<td>" + eng[1] + "</td>"
                result = result + "<td>" + mat[1] + "</td>"
                result = result + "<td>" + aver[1] + "</td>"
                result = result + "<td>" + rank[1] + "</td>"
                result = result + "<td>" + pass[1] + star[1] + scholar[1] + "</td>"
            result = result + "</tr>"
            result = result + "<tr>"
                result = result + "<td>" + uname[2] + "</td>"
                result = result + "<td>" + kor[2] + "</td>"
                result = result + "<td>" + eng[2] + "</td>"
                result = result + "<td>" + mat[2] + "</td>"
                result = result + "<td>" + aver[2] + "</td>"
                result = result + "<td>" + rank[2] + "</td>"
                result = result + "<td>" + pass[2] + star[2] + scholar[2] + "</td>"
            result = result + "</tr>"
            result = result + "<tr>"
                result = result + "<td>" + uname[3] + "</td>"
                result = result + "<td>" + kor[3] + "</td>"
                result = result + "<td>" + eng[3] + "</td>"
                result = result + "<td>" + mat[3] + "</td>"
                result = result + "<td>" + aver[3] + "</td>"
                result = result + "<td>" + rank[3] + "</td>"
                result = result + "<td>" + pass[3] + star[3] + scholar[3] + "</td>"
            result = result + "</tr>"
            result = result + "<tr>"
                result = result + "<td>" + uname[4] + "</td>"
                result = result + "<td>" + kor[4] + "</td>"
                result = result + "<td>" + eng[4] + "</td>"
                result = result + "<td>" + mat[4] + "</td>"
                result = result + "<td>" + aver[4] + "</td>"
                result = result + "<td>" + rank[4] + "</td>"
                result = result + "<td>" + pass[4] + star[4] + scholar[4] + "</td>"
            result = result + "</tr>"
        result = result + "</table>"
        
        document.getElementById("demo").innerHTML=result;
    </script>
    
</body>

 

'웹개발 교육 > JavaScript' 카테고리의 다른 글

[13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기  (0) 2022.08.11
[12일] JavaScript (6) - 요일 구하기, Date 객체, 함수  (0) 2022.08.10
[10일] JavaScript (4) - 이중 반복문, for 연습  (0) 2022.08.08
[9일] JavaScript (3) - switch ~ case문, for문, break, continue, while, do ~ while  (0) 2022.08.05
[8일] JavaScript (2) - 형변환, Math, if문  (0) 2022.08.04
  1. 배열 Array
  2. 배열 메소드(함수)
  3. toSring(), length, join()
  4. pop(), push()
  5. shift(), unshift()
  6. splice()
  7. concat()
  8.  정렬
  9. 1. 문자형
  10. 2. 숫자형
  11. 연습문제
  12. 문제 1
  13. 문제 2
  14. 문제 3
  15. 문제 4
  16. 문제 5
  17. 성적 프로그램 만들기
'웹개발 교육/JavaScript' 카테고리의 다른 글
  • [13일] JavaScript (7) - 함수, 내장 객체, Scope, 디지털 시계 만들기
  • [12일] JavaScript (6) - 요일 구하기, Date 객체, 함수
  • [10일] JavaScript (4) - 이중 반복문, for 연습
  • [9일] JavaScript (3) - switch ~ case문, for문, break, continue, while, do ~ while
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • merge commit
  • GIT
  • SQLD
  • 노랭이
  • sqld 자격증
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • this
  • 브랜치
  • 버전 관리
  • base
  • sqld 합격
  • git bash
  • 생성자
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • branch

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[11일] JavaScript (5) - 배열, 연습문제
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.