[문제 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 |