본문 바로가기
Front-End/JavaScript

자바스크립트 예제 (3)

by newny 2023. 2. 13.
반응형

1. if문 이용하기

1-1) 운행거리에 따른 택시 요금을 계산하시오 (단, 2000m 이하는 기본요금 900원 / 2000m 초과 운행시 200m 마다 기본요금에 100원씩 가산하여 요금을 계산한다.)
[풀이]

const f = (x) => {
    let y = 900;  // 요금 기본값 설정
    if(x>2000) {
        y = 900 + Math.ceil((x-2000)/200)*100
    }
    console.log(`총 운행거리: ${x}m`)
    console.log('기본요금: 900원')
    console.log(`추가요금: ${y-900}원`)
    console.log(`전체요금: ${y}원`)
}

2. for문 이용하기

2-1) 정수 1~x 사이의 모든 수를 더하시오 (누적 합)

[풀이]

const f = (x) => {
    let result = 0
    for(let i=1; i<=x; i++) {
        y += i
    }
    return result
}

2-2) n팩토리얼 값을 구하시오 (예 : 4! -> 4*3*2*1)

[코드]

const f = (n) => {
    let y = 1
    for(let i=1; i<=n; i++) {
        y *= i
    }
    return y
}

3. if문 + for문 이용하기

3-1) 값이 다른 두 정수 x와 y의 사이의 합을 구하시오
[풀이]

const f = (x, y) => {
    let result = 0;
    if(x<y) {
        for(let i=x; i<=y; i++) {
            result += i
        }
    } else {
        for(let i=y; i<=x; i++) {
            result += i
        }
    }
    return result
}

[다른풀이]

if(x>y) {
    let tmp=x;
    x=y;
    y=x;
}

for(let i=x; i<=y; i++) {
    result += i
}

3-2) x~y 사이의 정수 중에서 짝수의 갯수를 구하시오

[풀이]

const f = (x, y) => {
    let count = 0
    
    if (x>y) {
        let tem = x
        x=y
        y=x
    }

    for(let i=x; i<=y; i++) {
        if (i%2===0) {
            count++
        }
    }
    return count
}


3-3) 서기x년~y년 사이중에서 윤년이였던 해의 수를 구하시오

  • 4로 나누어 떨어지는 해는 윤년이다.
  • 하지만 100으로 나누어 떨어지는 해는 윤년이 아니다.
  • 하지만 400으로 나누어 떨어지는 해는 윤년이다.

[풀이]

const f = (x, y) => {
    let count = 0
    if (x>y) {
        let tem = x
        x=y
        y=x
    }

    for(let i=x; i<=y; i++) {
        if(i%4 === 0 && i%100!==0 || i%400===0) {
            count++
        }                
    }
    return count
}

4. while문 이용하기

4-1) 양수 x값이 주어졌을때 10을 x로 여러번 뺀후 결과값이 음수가 되었을 때 x를 뺀 횟수를 구하시오

[풀이]

const f = (x) => {
    let count = 0;
    let y = 10
    while (y>0) {
        y -= x
        count++
    }
    return count
}


[다른 풀이]

const f = (x) => {
    let count = 1;
    while (x*count<10) {
        count++
    }
    return count
}

4-2) x의 배수의 누적 합이 100이 넘어가려면 x부터 어디까지 더해야 하는지 구하시오

[풀이]

const f = (x) => {
    result=0
    count=1
    while(result<100) {
        result += count*x
        count++
    }
    console.log(`${x}의 배수 ${x*(count-1)}까지의 합`)
}

4-2-1) x의 배수의 누적 합이 100을 넘기는 값을 구하시오

[풀이]

const f = (x) => {
    result=0
    count=1
    while(result<100) {
        result += count*x
        count++
    }
    return result
}

5. 성적표 만들기

[결과]

[코드]

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>05_성적표</title>
</head>
<body>
    <h3>성적표</h3>
    <div id="demo">
    </div>

    <script>
        let name = "손흥민";
        let kor=33, eng=80, mat=76;

        let total = kor + eng + mat;
        let aver = parseInt(total/3);

        
        let credit = ""  // 학점
        if (aver>=90) {
            credit = "A"
        } else if (aver>=80) {
            credit = "B"
        } else if (aver>=70) {
            credit = "C"
        } else if (aver>=60) {
            credit = "D"
        } else {
            credit = "F"
        }
        

        let pass = ""  // 합격, 불합격 여부
        if(aver>=70) {
            if(kor<40 || eng<40 || mat<40) {
                pass = "재시험"
            } else {
                pass = "합격"
            }
        } else {
            pass = "탈락"
        }
        
        
        let star = ""  // 평균의 십의자리 숫자 만큼 별찍기
        for (let i=1; i<=parseInt(aver/10); i++) {
            star += "*"
        }


        let scholar = ""; // 장학생인지 아닌지
        if (aver>=95) {
            scholar = "장학생"
        }


        let result=""
        result = result + "<table border='1'>";
        
        result = result + "<tr>";
        result = result + "<th>이름</th>";
        result = result + "<td>" + name + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th>국어</th>";
        result = result + "<td>" + kor + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th>영어</th>";
        result = result + "<td>" + eng + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th>수학</th>";
        result = result + "<td>" + mat + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th>총점</th>";
        result = result + "<td>" + total + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th>평균</th>";
        result = result + "<td>" + aver + "</td>";
        result = result + "</tr>";

        result = result + "<tr>";
        result = result + "<th >결과</th>";
        result = result + "<td>";
        result = result + credit + "<br>";
        result = result + pass  + "<br>";
        result = result + star + "<br>";
        result = result + scholar
        result = result + "</td>";
        result = result + "</tr>";

        document.getElementById("demo").innerHTML = result;

   </script>
    
</body>
</html>

6. 반복문의 중첩

6-1) 구구단 출력하기

[코드]

for (let i=1; i<=9; i++) {
    document.write(i + "단<br>")
    for (let j=1; j<=9; j++) {
        document.write(i + "*" + j + "=" + (i*j) + "<br>")
    }
    document.write("<hr>")
}

6-2) 2g, 3g, 5g짜리 추가 각각 5개씩 있고 세가지 추의 조합으로 무게가 40~45사이일 때, 각 추의 갯수와 무게를 출력하여라 (단, 각 무게의 추는 1개 이상 사용하여야한다)
[결과]

[코드]

for (let i=2; i<=10; i+=2) {
    for(let j=3; j<=15; j+=3) {
        for(let k=5; k<=25; k+=5) {
            if((i+j+k >= 40) && (i+j+k <= 45)) {
                document.write(
                    "2g: " + (i/2) + "개, "
                        + "3g: " + (j/3) + "개, "
                        + "5g: " + (k/5) + "개, "
                        + "총 무게: " + (i+j+k) + "g"
                )
                document.write("<hr>")
            }
        }
    }
}

반응형

'Front-End > JavaScript' 카테고리의 다른 글

JavaScript(4)  (0) 2023.02.14
JavaScript(3)  (0) 2023.02.13
자바스크립트 예제 (2)  (0) 2023.02.09

댓글