[문제 1] 다음은 10명의 학생들에 대한 혈액형 데이터이다.

[ 'A',  'A',  'A',  'O',  'B',  'B',  'O',  'AB',  'AB',  'O' ]

아래와 같은 JSON을 정의하고, 각 혈액형별 학생수를 아래 JSON에 각 key에 대한 value에 저장하시오. 

const result = {
	"A" : 0, 
	"B" : 0, 
   	"AB" : 0, 
    	"O" : 0
};
[출력예시]
{ A: 3, B: 2, AB: 2, O: 3 }
더보기
[풀이]

const studentBlood = ['A', 'A', 'A', 'O', 'B', 'B', 'O', 'AB', 'AB', 'O'];

const result = {
	"A": 0,
 	"B": 0,
  	"AB": 0,
  	"O": 0
};

// for-of 는 배열을 스캔, for-in은 객체를 스캔한다
for(const i of studentBlood) {
	result[i]++;
};
console.log(result); // { A: 3, B: 2, AB: 2, O: 3 }

↑ 풀이방법 보기

 

[문제 2] 아래의 JSON은 어느 학급의 중간고사 성적이다. 학생별 총점과 평균을 구하시오.

const exam = {
    "철수": [89, 82, 79, 91],
    "민영": [91, 95, 94, 89],
    "남철": [65, 57, 71, 64],
    "혜진": [82, 76, 81, 83]
}
[출력예시]
철수의 총점은 341점 이고 평균은 85.25점 입니다.
민영의 총점은 369점 이고 평균은 92.25점 입니다.
남철의 총점은 257점 이고 평균은 64.25점 입니다.
혜진의 총점은 322점 이고 평균은 80.5점 입니다.
더보기
[풀이]

const exam = {
  "철수": [89, 82, 79, 91],
  "민영": [91, 95, 94, 89],
  "남철": [65, 57, 71, 64],
  "혜진": [82, 76, 81, 83]
};

// JSON의 key에 대한 반복 처리
for(const i in exam) {
	
    // 학생별 총점을 위한 변수 초기화
	let sum = 0;
    
    // exam[i]는 학생 한명의 점수 배열
    // 이 배열의 원소를 스캔하는 반복문을 사용하여 총점 구한다
    for(const p of exam[i]) {
    	sum += p;
    }
    
    // 총점을 학생 개개인의 과목수로 나누어 평균 구한다
    let avg = sum / exam[i].length;
    console.log(`${i}의 총점은 ${sum}점이고 평균은 ${avg}점 입니다.`);
};

[출력]
/*
철수의 총점은 341점이고 평균은 85.25점 입니다.
민영의 총점은 369점이고 평균은 92.25점 입니다.
남철의 총점은 257점이고 평균은 64.25점 입니다.
혜진의 총점은 322점이고 평균은 80.5점 입니다.
*/

↑ 풀이방법 보기

 

[문제 3] 문제 2의 점수가 국어, 영어, 수학, 과학 순서일 경우 수학에 대한 모든 학생의 총점과 평균을 구하시오.

[출력예시]
모든 학생의 수학 총점은 325점 이고 평균은 81.25점 입니다.
더보기
[풀이]

const exam = {
  "철수": [89, 82, 79, 91],
  "민영": [91, 95, 94, 89],
  "남철": [65, 57, 71, 64],
  "혜진": [82, 76, 81, 83]
};

// 전체 학생에 대한 총점을 구할 때는 반복문 밖에서 선언
let sum = 0;

// JSON은 길이를 알 수 없기 때문에 JSON의 원소 하나를 반복문으로 스캔할 때 마다 변수에 증감식을 사용한다.
let studentCount = 0;

for(const i in exam) {
	sum += exam[i][2]; // exam 객체의 key에 대한 2번째 배열을 더한다
    
    	// 학생 수 카운트
    	studentCount++;
};

// 학생별 수학 총점 / 학생 수
let avg = sum / studentCount;
console.log(`모든 학생의 수학 총점은 ${sum}점 이고 평균은 ${avg}점 입니다.`);

[출력]

// 모든 학생의 수학 총점은 325점 이고 평균은 81.25점 입니다.

↑ 풀이방법 보기

 

[문제 4] 아래의 데이터는 2021년 1월 25일 ~ 2월 1까지의 Covid19 확진자 수를 표현한 자료이다.

covid19 = [
    {date: '0125', active: 426}, 
    {date: '0126', active: 343}, 
    {date: '0127', active: 547}, 
    {date: '0128', active: 490}, 
    {date: '0129', active: 460}, 
    {date: '0130', active: 443}, 
    {date: '0131', active: 338}, 
    {date: '0201', active: 299}
]

1월 25일 ~ 2월 1일 까지의 누적 확진자 수와 일 평균 확진자 수를 구하시오.

[출력예시]
누적 확진자 수: 3346
평균 확진자 수: 418.25
더보기
[풀이]

covid19 = [
  {date: '0125', active: 426},
  {date: '0126', active: 343},
  {date: '0127', active: 547},
  {date: '0128', active: 490},
  {date: '0129', active: 460},
  {date: '0130', active: 443},
  {date: '0131', active: 338},
  {date: '0201', active: 299}
];

// 전체 확진자 수를 위한 합계 변수 선언
let sum = 0;

// for-of문을 활용해서 covid19 배열 스캔
for(const i of covid19) {
	sum += i.active;
};

let avg = sum / covid19.length;

console.log(`누적 확진자 수 ${sum}\n평균 확진자 수 ${avg}`);

[출력]
/*
누적 확진자 수: 3346
평균 확진자 수: 418.25
*/

↑ 풀이방법 보기

 

[문제 5] 문제 4번의 1월 25일 부터 2월 1일까지 중 확진자가 가장 많이 나타난 날짜를 구하시오.

[출력예시]
확진자가 가장 많이 나타난 날: 0127
더보기
covid19 = [
  {date: '0125', active: 426},
  {date: '0126', active: 343},
  {date: '0127', active: 547},
  {date: '0128', active: 490},
  {date: '0129', active: 460},
  {date: '0130', active: 443},
  {date: '0131', active: 338},
  {date: '0201', active: 299}
];

// 비교를 위한 covid19 배열의 0번째 active 값 대입
let maxActive = covid19[0].active;

// 비교를 위한 covid19 배열의 0번째 date 값 대입
let maxDate = covid19[0].date;

// for-of문으로 covid19 배열 스캔
for(const i of covid19) {
	// 크기 비교
	if(maxActive < i.active) {
    	maxActive = i.active;
    	maxDate = i.date;
    	};
};
console.log("확진자가 가장 많이 나타난 날: %s", maxDate);

[출력]
// 확진자가 가장 많이 나타난 날: 0127

↑ 풀이방법 보기

'국비수업 > JavaScript' 카테고리의 다른 글

[Javascript] [연습문제] 함수 실습  (0) 2022.02.09
[Javascript] 함수  (0) 2022.02.08
[Javascript] JSON  (0) 2022.02.04
[Javascript] [연습문제] 배열 실습  (0) 2022.02.03
[Javascript] 배열  (0) 2022.01.29

+ Recent posts