[JavaScript] for문, 반복문 예제

기본함수

입력받는 함수 prompt
특수문자는 \붙이기 // 문자열 특수문자 : \(역슬래쉬) // 특수문자 사용법 : \영문자
소수점 자르기 함수 : 숫자.toFixed(자를자리수)
자르기 함수 .split("자를문자")

for문

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/06_for.js"></script>
</body>
</html>

js

// 반복문 : for문(80%)
// 왜? 같은 명령문을 많은 횟수를 출력하고 싶을 때 사용
// 예) alert("Hello"); // 10번출력
// 사용법 : 초기값을 조건식에 넣어 판단해서 참이면 반복하고,
//          거짓이면 중단함
// for(초기값; 조건식; 증감식) {
//    반복문(문장);
// }

// 예제) 안녕하세요를 3번 출력하세요
// 단, 반복문을 사용하세요
// for(let i=0; i<3; i++){
//     // 반복문(출력)
//     alert("안녕하세요");
// }

// TODO: 자주 나오는 코딩 2가지 패턴 : 꼭 기억할 것
// TODO: 1) 카운팅 : 1씩 증가시키기
// 예제 : count 변수가 1부터 10까지 1씩 증가하는 코드를 작성하세요.
// count 변수의 최종값을 출력하세요
// let count = 0; // 변수 초기화

// for(let i=0; i<10; i++){
//     // TODO: 카운팅 : 아래 코드를 완성하세요
//     // i =1 일때 1 <= 10 (참) 반복문실행 : count = 0 + 1 (1)
//     // i =2 일때 2 <= 10 (참) 반복문실행 : count = 1 + 1 (2)
//     // i =3 일때 3 <= 10 (참) 반복문실행 : count = 2 + 1 (3)
//     // ...
//     // i =10 일때 10 <= 10(참) 반복문실행 : count = 9 + 1 (10)

//     // count = count + 1; // 카운팅 코드
//     count++;
// }
// console.log(count);

// TODO: 2) 누적합
// 예제 : 1 ~ 10까지 모든 숫자를 더해서 최종 결과를 출력하는
// 코드를 작성하세여
// 출력 : 55
// 카운팅 코드 사용, for문의 i 변수 사용
// let count = 0; // 카운팅 변수 초기화
// let sumVal = 0; // 누적된 값을(1~10까지의합) 저장할 변수 초기화

// for(let i = 1; i<=10; i++){
//     // 카운팅 코드
//     count = count + 1;
//     // 누적합 코드
//     sumVal = sumVal + count;
// }
// alert(sumVal);

// let sum = 0;

// for(let i = 1; i <= 10; i++){
//     sum += i;
// }
// console.log(sum);

// TODO: 3) 문자열 붙이기
// 예제 : ********** (10개)를 화면에 출력하세요
// 단, 반복문을 이용하세요
// let strCount = ""; // 빈문자열("")로 초기화
// for(let i=0; i<11; i++){
//     // 문자열 붙이기 (카운팅)
//     strCount += "*";
// }
// console.log(strCount);

// 연습) 아래 결과 처럼 별 출력하기
// 결과 :
// *
// **
// ***
// ****
// *****
// let nul ="";
// let st = "*"
// for(let i=1; i<=5;i++){
//     nul += st + "\n";
//     st += "*";
// }
// alert(nul);

let strCount = ""; // 빈문자열("") 로 초기화

for(let i=1; i<=5; i++) {
    // 문자열 붙이기 (카운팅)
    // i=1 일때 1<=5 (참) 반복문실행 strCount = "" + "*"("*"), console.log("*")
    // i=2 일때 2<=5 (참) 반복문실행 strCount = "*" + "*"("**"),console.log("**")
    // i=3 일때 3<=5 (참) 반복문실행 strCount = "**" + "*"("***"), console.log("***")
    // ...
    strCount = strCount + "*";
    // 결과 출력
    console.log(strCount);
}

exam2

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/07_exam_2.js"></script>
</body>
</html>

js

// 문제 풀이
// 1) 입력된 단어를 입력된 횟수만큼 반복해 출력하세요
// 입력 1 : love
// 입력 2 : 3
// 출력 : lovelovelove
// 입력함수 : let char = prompt("1개의 문자열이 입력된다.");
//           let num = Number(prompt("1개의 숫자가 입력된다."))

// let char = prompt("1개의 문자열이 입력된다");
// let num = Number(prompt("1개의 숫자가 입력된다."))
// let nul =""
// for(let i=1;i<=num;i++){
//     nul += char;
// }
// alert(nul)

// 2) 입력 : 없음
//    출력 : "!@#$%^&*()"
// alert("!@#$%^&*()")

// 3) 입력 : 없음
//    출력 : "C:\Download\hello.cpp"
// 힌트 : 특수문자 출력방법 : \\
// alert("C:\\Download\\hello.cpp");

// 4) 입력 : 1.414213
//    출력 : 1.414213
// let num = Number(prompt("실수를 입력하세요"));
// alert(num);

// 5) 입력 : 1.59254
//    출력 : 1.59 (소수점 2자리수)
// 힌트 : 소수점 자르기 함수 : 숫자.toFixed(자를자리수)
// let num = Number(prompt("실수를 입력하세요"));
// alert(num.toFixed(2));

// 6) 입력 : 125
//    출력 : 125 125 125
// let c = prompt()
// let nul ="";
// for(let i=0; i<3; i++){
//     nul += c;
//     nul += " ";
// }
// alert(nul)

// 자료형 : 배열 (간략설명)
// 자료형 : 문자열(string), 숫자(number), 참/거짓(boolean/bool)
//          배열
// 변수 : 변하는 값을 저장하는 장소(1가지 값만 저장함), let 변수명
// 배열 : 여러가지 값을 저장하는 장소, 변수명 동일하게 사용
//          인덱스번호
// 사용법 : 변수명[인덱스번호]
// 보충설명 : a[0] == 0번방에 값
// 예) a[0] = 1, a[1] = 2, ....

// 예제 7) 입력 = 1 2
//         출력 = 1 2
// 자바스크립트에서 문자열 자르기 함수 : .split("자를문자");
// 예) let arr = prompt("두 정수를 입력해 주세요").split(" ");
//      arr(배열), arr[0] = 1, arr[1] = 2
//      alert(arr[1] + " " + arr[0]); // 2 1

// 7) 입력 : A b
//    출력 : b A
// let arr = prompt("두 정수를 입력해 주세요").split(" ");
// alert(arr[1] + " " + arr[0]);

// 8) 입력 : 3:16
//    출력 : 3:16
// let a = prompt()
// alert(a)

// 9) 입력 : 2013.8.5
//    출력 : 2013.08.05
// 힌트 : 문자열 자르기 함수 : 문자열.split("자를문자");
// let b = prompt().split(".");
// alert(b[0]+".0"+b[1]+".0"+b[2])


// 10) 입력 : 000907-1121112
//     출력 : 0009071121112
// 방법1
// let c = prompt().split("-");
// let nul = ""
// for(let i = 0; i < 2; i++){
// nul += c[i];
// }
// alert(nul)
// 방법2
// let num = prompt("날짜를 입력해 주세요").split("-"); // 배열로 나옴
// let first = num[0]; // 000907
// let second = num[1]; // 1121112

// alert(first + second);

// 11) 입력 : Programming is very fun!!
//      출력 : Programming is very fun!!
// let strChar = prompt("문자열을 입력하세요");
// alert(strChar);

// 12) 입력 : 1.414213
//     출력 : 1
// 방법 1
// let a = Number(prompt())
// alert(a.toFixed(0))
// 방법 2
// 문제가 실수라서 Number() 안됨 : split() 문자열만 잘림(숫자 안됨)
// let num = prompt("실수를 입력해 주세요").split(".");
// let first = num[0]; // 1
// let second = num[1]; // 414213
// alert(first); // 1

// 13) 입력 : Boy
//     출력 : 'B'
//            'o'
//            'y'
// 힌트 : Boy (문자열) : 1문자의 합 == 문자들의 배열
//      let arr = "Boy" -> arr[0] = "B", arr[1] = "o", arr[2] = "y";
// let arr = "Boy"
// alert(arr[0] + "\n" + arr[1] + "\n" + arr[2]);

// let s = prompt("문자열을 입력하세요");
// alert("'"+s[0]+ "'" + "\n"+"'"+s[1]+ "'"+"\n"+"'"+s[2]+ "'")

// 14) 두 정수의 합을 출력한다.
// 입력1 : 2147483648
// 입력2 : 2147483648
// 출력  : 4294967296
// let a = Number(prompt("입력1 : "));
// let b = Number(prompt("입력2 : "));
// alert("결과는 : "+a+b);

// 15) 입력 : 75254
//           숫자문자열 : "75254"
//               "75254" == "7" + "5" + "2" + "5" + "4"
//                       배열[0] + 배열[1] ... + 배열[4]
//     let aaa = "75254";
//        aaa[0] == "7";
//        aaa[1] == "5";
//        alert(aaa[3]) // 5
//     출력 : [70000]
//            [5000]
//            [200]
//            [50]
//            [4]
let arr = prompt("문자열을 입력해 주세요"); // 75254 (문자들의 배열 == 문자열)
// arr[0] = 7 , arr[1] = 5 ... arr[4] = 4
let arr2 = "[" + arr[0] + "0000]" + "\n"; // [ + 7 + 0000]
let arr3 = "[" + arr[1] + "000]" + "\n"; // [ + 5 + 000]
let arr4 = "[" + arr[2] + "00]" + "\n"; // [ + 2 + 00]
let arr5 = "[" + arr[3] + "0]" + "\n"; // [ + 5 + 0]
let arr6 = "[" + arr[4] + "]" + "\n"; // [ + 4 + ]

// 결과 출력
alert(arr2 + arr3 + arr4 + arr5 + arr6);

exam3

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/08_exam_3.js"></script>
</body>
</html>

js

// 1) 부호를 바꾸어 출력한다.
//  입력 : -1
//  출력 : 1
// let num1 = Number(prompt("숫자1")); // 문자열 -> 숫자로 변경됨
// alert(num1 * -1); // 부호 변경됨 (양수 <-> 음수)

// 2) 입력 : -2147483649
//    출력 : -2147483649
// let b = prompt()
// alert(b)

// 3) 정수 2개 입력된다. a를 b로 나눈 몫을 출력한다.
// 입력 1(a) : 1
// 입력 2(b) : 3
// 출력 : 0
// 힌트 : parseInt(실수) -> 정수, parseInt(문자열) -> 정수
// let a = Number(prompt());
// let b = Number(prompt());
// alert(parseInt(a/b))

// 4) 정수 2개 입력된다. a를 b로 나눈 나머지를 출력한다.
// 입력 1(a): 10
// 입력 2(b): 3
// 출력 : 1
// let a = Number(prompt());
// let b = Number(prompt());
// alert(a%b)

// 5) 입력된 정수에 1을 더해 출력한다.
// 입력 : 2147483647
// 출력 : 2147483648
// let a = Number(prompt());
// alert(a+1);

// 6) 정수 2개 입력받아 자동 계산하기
// 첫 줄에 합
// 둘째 줄에 차(빼기),
// 셋째 줄에 곱,
// 넷째 줄에 몫,
// 다섯째 줄에 나머지,
// 입력 1: 10
// 입력 2: 3
// 출력 : 13
    //   7
    //   30
    //   3
    //   1
// let a = Number(prompt());
// let b = Number(prompt());
// let sum = a+b;
// let minus = a-b;
// let multiply = a*b;
// let divide = parseInt(a/b);
// let rest = a%b;
// alert(sum +"\n"+ minus +"\n"+ multiply +"\n"+ divide +"\n"+ rest)


// 7) 정수 3개 입력받아 합과 평균 출력하기
// 입력 1: 1
// 입력 2: 2
// 입력 3: 3
// 출력 : 6
// 공식 : 합 = 모든 숫자 더하기
//      평균 = 모든숫자합/개수
// let a = Number(prompt());
// let b = Number(prompt());
// let c = Number(prompt());
// let sum = a + b + c
// let avg = ((a + b + c) / 3).toFixed(1);
// alert(sum + "\n" + avg)

// 8) 정수 1개 입력받아 2배 곱해 출력하기(설명)
// 입력 : 1024
// 출력 : 2048
// let a = Number(prompt());
// alert(a*2);

// 9) 두 정수(a,b) 입력받아 비교하기1(설명)
// a가 b보다 큰 경우 1을, 그렇지 않은 경우 0을 출력한다.
// 입력 1(a): 9
// 입력 2(b): 1
// 출력 : 1
// let a = Number(prompt())
// let b = Number(prompt())
// if(a>b){
//     alert(1)
// }else{
//     alert(0)
// }

// 9) 두 정수 (a,b) 입력받아 비교하기2(설명)
// a와 b의 값이 같은 경우 1을, 그렇지 않은 경우 0을 출력한다.
// 입력 1: 0
// 입력 2: 0
// 출력 : 1
// let num = Number(prompt("숫자1"));  // 0
// let num2 = Number(prompt("숫자2")); // 0

// if(num === num2) {
//     alert(1);
// } else {
//     alert(0);
// }

// 10) // 참 거짓 바꾸기(설명)
// 입력된 값이 0이면 1, 1이면 0을 출력한다.
// (단, 0 또는 1 만 입력된다.)
// let a = prompt()
// if (a==0){
//     alert(1);
// } else if(a==1){
//     alert(0);
// } else {
// }


// 11) 정수 3개 입력받아 가장 작은 수 출력하기(설명)
// 가장 작은 값을 출력한다.
// 입력 1: 3
// 입력 2: -1
// 입력 3: 5
// 출력 : -1
// 힌트 : Math.min(값1,값2,...) : 최소값, Math.max(값1,값2,...) : 최대값
// let a = Number(prompt())
// let b = Number(prompt())
// let c = Number(prompt())
// alert(Math.min(a,b,c))

// 12) 정수 3개 입력받아 짝수만 출력하기(설명)
// 입력 1: 1
// 입력 2: 2
// 입력 3: 4
// 출력 : 2
//        4
// let num = Number(prompt("숫자1"));  // 1
// let num2 = Number(prompt("숫자2"));  // 2
// let num3 = Number(prompt("숫자3"));  // 4

// // 임시 결과 변수
// let result = ""; // 최초 빈문자 초기화

// // 조건문 판단 : num
// if(num % 2 === 0) {
//     // 짝수
//     result = result + num + "\n"; // result(문자열) + num(숫자) == 문자열
// }
// // 조건문 판단 : num
// if(num2 % 2 === 0) {
//     // 짝수
//     result = result + num2 + "\n"; // result(문자열) + num(숫자) == 문자열
// }
// // 조건문 판단 : num
// if(num3 % 2 === 0) {
//     // 짝수
//     result = result + num3 + "\n"; // result(문자열) + num(숫자) == 문자열
// }
// // 결과 출력
// alert(result);

// let result = ""; // 최초 빈문자

// for (let i = 0; i < 3; i++) {
//   let num = Number(prompt("정수1"));
//   if (num % 2 == 0) {
//     // 짝수
//     result = result + num + "\n"; // 문자열 누적합 형태
//   }
// }

// // 최종 result 출력 (짝수만 들어가 있음)
// alert(result);

// 13) 정수 3개 입력받아 짝/홀 출력하기(설명)
// odd(홀수), even(짝수)
// 입력 1: 1
// 입력 2: 2
// 입력 3: 8
// 출력 : odd
//       even
//       even
// let a= Number(prompt())
// let b= Number(prompt())
// let c= Number(prompt())
// let result = "";
// if(a%2==0){
//     result += "even\n"
// }else{
//     result += "odd\n"
// }

// if(b%2==0){
//     result += "even\n"
// }else{
//     result += "odd\n"
// }

// if(c%2==0){
//     result += "even\n"
// }else{
//     result += "odd\n"
// }
// alert(result)

// 14) 점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
// 평가 기준
// 점수 범위 : 평가
//  90 ~ 100 : A
//  70 ~   89 : B
//  40 ~   69 : C
//    0 ~   39 : D
// 로 평가되어야 한다.
// 입력 : 73
// 출력 : B
// let a = Number(prompt())
// if(100>=a && 90<=a){
//     alert("A")
// } else if(90>a && 69 < a){
//     alert("B")
// } else if(70>a && 39 < a){
//     alert("C")
// } else if(40>a && 0 < a){
//     alert("D")
// }

// 15) 평가 출력
// 평가 : 내용
// A : best!!!
// B : good!!
// C : run!
// D : slowly~
// 나머지 문자들 : what?
// 입력 : A
// 출력 : best!!!
// let b = prompt()
// if(b === 'A'){
//     alert("best!!!")
// } else if(b==='B'){
//     alert("good!!")
// } else if(b==='C'){
//     alert("run!")
// } else if(b==='D'){
//     alert("slowly~")
// } else{
//     alert("what?")
// }

// 16) 정수 판별
// 양수이면 "양수", 음수이면 "음수", 0이면 0을 출력하시오.
// 힌트 : 입력값 > 0 (양수)
// 입력 : 5
// 출력 : 양수

// let a = Number(prompt())
// if(a>0){
//     alert("양수")
// }else if(a<0){
//     alert("음수")
// }else {
//     alert(0)
// }

// 17) 비만도 측정 0
// BMI 수치   비만 판정
// ~10 이하   정상
// 11~20 이하   과체중
// 20 초과   비만
// 비만도를 입력받아서 위의 문자열로 출력하세요
// 입력 : 15
// 출력 : 과체중

let a =Number(prompt())
if(a<=10){
    alert("정상")
}else if(a<=20){
    alert("과체중")
}else{
    alert("비만")
}

for2

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/09_for_2.js"></script>
</body>
</html>

js

// 반복문과 함께 사용하는 예약어
// 1) break : 중단 예약어 **
// 예제) 1부터 5까지 반복해서 3이 될때 중단하고 빠져나오는
//    코드를 작성하세요
// for(초기값;조건식;증감식){} : 조건식 참일때만 반복함
// for(let i=1; i<=5; i++) {
//     // 결과 출력
//     console.log("i의 값은 " + i); // i값 출력
//     // i === 3 일때 중단
//     if(i === 3) {
//         break;  // 반복문 강제 중단
//     }
// }

// 2) continue : 계속 이라는 예약어
// 예제 2) 1 ~ 5까지 출력하되 3은 제외하고 출력하기
for(let i=1; i<=5; i++) {

    // i === 3 이면 통과 : 아래 라인을 실행안함
    if( i === 3 ) {
        // 1) 밑에 console.log 라인이 실행안됨
        // 2) 바로 반복문 첫 라인으로 올라감
        continue;
    }

    console.log("i의 값은 " + i); // 결과 i 출력
}

exam4

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/10_exam_4.js"></script>
</body>
</html>

js

// 1)

// for(let i=1;i<=100;i++){
//     console.log(i)
// }

// 2) 1 부터 n 까지 출력하기
// let a = Number(prompt())
// let nul = ""
// for(let i=1;i<=a;i++){
//     nul += i +" "
// }
// alert(nul)

// 3) a 부터 b까지 출력하기
// 입력예시 1: 8
// 입력예시 2: 3
// 출력예시 : 3 4 5 6 7 8

// 방법1
// let b = Number(prompt())
// let c = Number(prompt())
// let nu =""
// if(b>c){
//     for(let i=c ; i<=b; i++){
//         nu += i+" "
//     }
//     alert(nu)
// }else{
//     for(let i=b; i<=c; i++){
//         nu += i + " "
//     }
//     alert(nu)
// }

// 방법2    
// 입력값 2개를 비교해서 : 작은값(시작값) , 큰값(끝값)

// let num = Number(prompt("숫자 1개"));  // 8
// let num2 = Number(prompt("숫자 1개")); // 3

// // 최대값(Math.max()) , 최소값(Math.min())
// let maxNum = Math.max(num, num2); // 큰값(끝값)
// let minNum = Math.min(num, num2); // 작은값(시작값)

// // 문자열 붙이기 변수
// let result = ""; // 빈문자열로 초기화

// // for(시작값;시작값<=끝값;증감식){}
// for(let i=minNum; i<=maxNum; i++) {
//     // 문자열 붙이기 : 문자열 + 숫자 => 문자열(자동 자료형변환)
//     result = result + i + " ";
// }
// // 결과 출력
// alert(result);

// 4) 별 출력하기
// 입력 : 5
// 출력 : *****
// let a = Number(prompt());
// let nul = "";
// for(let i =0; i<a; i++){
//     nul += "*";
// }
// alert(nul);

// 5) 1 ~ 10 까지 합계를 구해서 아래와 같이 화면에 출력해 보세요
// 출력 : "1~10까지의 합계 : 55"
let sum = 0;
for(i=1; i<=10; i++){
    sum += i;
}
alert("1~10까지의 합계 : " + sum)