수업시간에 내주신 문제들을 다시 정리해보고 이해안되는 부분을 공부해보자.
문제1. 'hello world'에서 ㅣ이 사용된 개수를 구하시오. (for문사용)
const txt = 'hello world';
undefined
let count = 0;
undefined
for (let i = 0; i < txt.length; i++) {
if(txt[i] == 'l') {
count++;
}
}
console.log(count); //3
문제2. '12390812476' 자릿수 별로 더한 값을 출력해보세요
const txt = '12390812476';
undefined
let result = 0;
undefined
for (let i = 0; i <txt.length; i++) {
result += +txt[i]
}
43
문제3. arr = ['33', '29', '11', '55', '47'] 의 평균값을 구해보세요.
const arr = ['33', '29', '11', '55', '47'];
undefined
let result = 0;
undefined
for (let i = 0; i < arr.length; i++) {
result += +arr[i]
}
175
result
175
result/arr.length
35
문제4. 구구단 2단을 출력해보세요.
for (let i = 0; i < 10; i++) {
console.log(`2 * ${i} = ${2*i}`)
2 * 0 = 0
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
문제5. 3, 6, 9, 12, 15, 18을 출력하고 합을 구하시오.
for (let i =3; i <20; i+=3) {
console.log(i);
}
VM3567:2 3
VM3567:2 6
VM3567:2 9
VM3567:2 12
VM3567:2 15
VM3567:2 18
undefined
result = 0;
0
for (let i = 3; i < 20; i += 3) {
result += i;
}
63
문제6. 0부터 100을 포함한 숫자까지 짝수를 다 더해보세요
let result = 0;
0
for (let i = 0; i < 100; i+=2) {
result += i
}
2450
문제7. 평균나이를 구하시오.
let age = [19, 30, 23, 28, 32, 40, 32, 35, 29, 30]
let age = [19, 30, 23, 28, 32, 40, 32, 35, 29, 30];
undefined
let sum = 0;
undefined
for (let i = 0; i < age.length; i++) {
sum += age[i]
}
298
sum/age.length
29.8
문제8.구글입사문제를 풀어보시오.
문제9-1.나이가 20이상인 여성을 출력하시오.
{회원번호: 0, 아이디: 'a', 성별: '남', 나이: 21}
{회원번호: 1, 아이디: 'b', 성별: '남', 나이: 17}
{회원번호: 2, 아이디: 'c', 성별: '여', 나이: 6}
{회원번호: 3, 아이디: 'd', 성별: '여', 나이: 55}
let data = [
{회원번호:0, 아이디:'a', 성별:'남', 나이:21},
{회원번호:1, 아이디:'b', 성별:'남', 나이:17},
{회원번호:2, 아이디:'c', 성별:'여', 나이:6},
{회원번호:3, 아이디:'d', 성별:'여', 나이:55}
]
for (let i =0; i <data.length; i++) {
if(data[i]['나이'] >= 20 && data[i]['성별'] =='여') {
console.log(data[i]['회원번호'])
}
}
문제9-2.배열메서드를 사용하여 나이가 20이상인 여성을 출력하시오.
let data = [
{회원번호:0, 아이디:'a', 성별:'남', 나이:21},
{회원번호:1, 아이디:'b', 성별:'남', 나이:17},
{회원번호:2, 아이디:'c', 성별:'여', 나이:6},
{회원번호:3, 아이디:'d', 성별:'여', 나이:55}
]
const found = data.filter(i => i['나이'] >= 20 && i['성별'] == '여');
// 0: {회원번호: 3, 아이디: 'd', 성별: '여', 나이: 55}
//length: 1
item을 i로 줄여서도 적용이 된다.
문제9-3.평균나이를 구하시오. (for문 사용)
let data = [
{회원번호:0, 아이디:'a', 성별:'남', 나이:21},
{회원번호:1, 아이디:'b', 성별:'남', 나이:17},
{회원번호:2, 아이디:'c', 성별:'여', 나이:6},
{회원번호:3, 아이디:'d', 성별:'여', 나이:55}
]
let result = 0;
for (let i = 0; i < data.length; i++) {
result += data[i]['나이']
}
99
result/data.length
//24.75
문제9-4.평균나이를 구하시오. (메서드 사용)
data.map(i => i['나이'])
//(4) [21, 17, 6, 55]
data.map(i => i['나이']).reduce((a, b) => a + b, 0)
//99
문제9-5.가장 큰 나이를 구하시오.
let data = [
{회원번호:0, 아이디:'a', 성별:'남', 나이:21},
{회원번호:1, 아이디:'b', 성별:'남', 나이:17},
{회원번호:2, 아이디:'c', 성별:'여', 나이:6},
{회원번호:3, 아이디:'d', 성별:'여', 나이:55}
]
let maxAge = 0;
for (let i = 0; i < data.length; i++) {
if(maxAge < data[i]['나이']){
maxAge = data[i]['나이']
}
}
55
maxAge | data[i]['나이'] | ||
---|---|---|---|
1번째순회 | 0 | < | 21 |
2번째순회 | 21 | < | 17 |
3번째순회 | 21 | < | 6 |
4번째순회 | 21 | < | 55 |
문제9-6.가장 적은 나이를 구하시오.
❗❗주의
if문에서 < 부등호만 반대로 바꾸면 되겠지?라는 생각을 했다... 이 부분을 주의 해야한다. 순회표를 그려보면 왜 안되는지? 답을 알수가 있다.
minAge | data[i]['나이'] | ||
---|---|---|---|
1번째순회 | 0 | > | 21 |
2번째순회 | 0 | > | 17 |
3번째순회 | 0 | > | 6 |
4번째순회 | 0 | > | 55 |
표를 보면 '나이'값으로 받은 데이터가 0보다 작을수는 없다! 그러므로, 부등호만 반대로 바꾸는것은 옳지않다. 그럼 무엇을 또 바꿔야 할까? 바로 minAge의 값을 바꿔줘야한다. 우리는 처음에 minAge라는 변수를 만들어 0이라는 값을 주었기 때문에 0이 고정값이 되어있는 것이다. minAge에 충분히 큰 숫자를 넣어주면 해결!!
❓여기서 궁금증이 하나 더 생긴다.충분히 큰 숫자값이 뭘까??
Infinity(무한대를 나타내는 숫자값)
참고:https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Infinity
{회원번호: 0, 아이디: 'a', 성별: '남', 나이: 21}
{회원번호: 1, 아이디: 'b', 성별: '남', 나이: 17}
{회원번호: 2, 아이디: 'c', 성별: '여', 나이: 6}
{회원번호: 3, 아이디: 'd', 성별: '여', 나이: 55}
let minAge = Infinity;
for (let i = 0; i < data.length; i++) {
if(minAge > data[i]['나이']){
minAge = data[i]['나이']
}
}
6
minAge | data[i]['나이'] | ||
---|---|---|---|
1번째순회 | Infinity | > | 21 |
2번째순회 | 21 | > | 17 |
3번째순회 | 17 | > | 6 |
4번째순회 | 6 | > | 55 |
문제10.문제: while문을 사용하여 2단을 출력하시오.
let i = 1;
undefined
while(i < 10) {
console.log(`2 * ${i} = ${2*i}`);
i++;
}
VM12250:2 2 * 1 = 2
VM12250:2 2 * 2 = 4
VM12250:2 2 * 3 = 6
VM12250:2 2 * 4 = 8
VM12250:2 2 * 5 = 10
VM12250:2 2 * 6 = 12
VM12250:2 2 * 7 = 14
VM12250:2 2 * 8 = 16
VM12250:2 2 * 9 = 18
좀 더 재사용이 가능하게 만들어보자.
문제11.while문으로 구구단 출력하시오.
let i = 2;
let j = 1;
while(i < 10) {
while(j < 10) {
console.log(`${i} * ${j} = ${i*j}`)
j++;
}
i++;
}
문제12.while문을 사용하여 0부터 101까지 짝수를 모두 더해주세요.
크,, 문제정리 최고입니다!