자바스크립트 for,while문제풀기

Jo yun hee·2022년 5월 9일
0

javaScript

목록 보기
8/17
post-custom-banner

수업시간에 내주신 문제들을 다시 정리해보고 이해안되는 부분을 공부해보자.

문제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
maxAgedata[i]['나이']
1번째순회0<21
2번째순회21<17
3번째순회21<6
4번째순회21<55

문제9-6.가장 적은 나이를 구하시오.

❗❗주의
if문에서 < 부등호만 반대로 바꾸면 되겠지?라는 생각을 했다... 이 부분을 주의 해야한다. 순회표를 그려보면 왜 안되는지? 답을 알수가 있다.

minAgedata[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
minAgedata[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까지 짝수를 모두 더해주세요.

post-custom-banner

2개의 댓글

comment-user-thumbnail
2022년 5월 10일

크,, 문제정리 최고입니다!

답글 달기
comment-user-thumbnail
2022년 5월 10일

와 윤희님 구글가시나요? 저 나중에 이거보고 복습해야겠어요

답글 달기