라라리라

2023.08.14 / Step 9 [문자열] - 코딩 26 일차 본문

코딩/2023 JavaScript Console

2023.08.14 / Step 9 [문자열] - 코딩 26 일차

헤실 2023. 8. 14. 20:41

문자열1_개념01_문자.html

 

<script>

    /*
        [개념] 문자열(= 문자 여러개)
    */

    let a = "javascript";           // 큰 따옴표로 감싼다.
    document.write(a + "<br>");
   
    let b = 'javascript';           // 작은 따옴표로 감싼다.
    document.write(b + "<br>");
   
    let c = "'hello'";              // 작은 따옴표를 표시하고 싶을 때는 큰 따옴표로 감싼다.
    document.write(c + "<br>");
   
    let d = '"hello"';              // 큰 따옴표를 표시하고 싶을 때는 작은 따옴표로 감싼다.
    document.write(d + "<br>");
   
    // 더하기(+) : 더하기를 사용하면 서로 다른 문자를 연결할 수 있다.
    let lastName = "";            
    let firstName = "길동";
    let fullName = lastName + firstName;
    document.write(fullName + "<br>");
   
    // 문자열 초기화 : 보통 큰따옴표에 아무것도 표시하지 않고 초기화한다.
    a = "";

    // 문자열 길이 : 배열과 마찬가지로 length를 사용한다.
    let text = "abcde";
    document.write(text.length);

</script>

 

 


문자열1_개념02_형변환.html

 

<script>

    /*
        [개념] 문자열 형변환
            문자열은 숫자가 아니기 때문에 산술연산을 사용할 수 없다.
            문자열을 산술하기 위해서는 문자를 숫자로 변환해야 한다.

            [1] 문자를 숫자로 형변환
                Number(문자)
            [2] 숫자를 문자로 형변환
                String(숫자)
    */

    let a = "10";
    document.write(a + 10 + "<br>");         // 1010

    a = Number(a);
    document.write(a + 10 + "<br>");        // 20

    let b = 10;
    b = String(b);
    document.write(b + 10);                 // 1010

</script>

 

 


문자열1_개념03_인덱싱.html

 

<script>

    /*
        [개념] 문자열 인덱싱(indexing)
            문자열도 배열과 유사하게 인덱싱이 가능하다.
            대괄호와 인덱스 번호를 활용해 글자 한 개를 출력할 수 있다.
    */

    let text = "abcde";
    document.write(text[1] + "<br>");

    /*
        [문제]
            text변수에서 c만빼고 출력하시오.
        [정답]
            abde
    */

    for(let i=0; i<text.length; i++) {
        if(text[i] != "c") {
            document.write(text[i]);
        }
    }
    document.write("<br>");

    /*
        [문제]
            text변수에서 가장 마지막 글자를 출력하시오.
        [정답]
            e
    */

    let index = text.length - 1;
    document.write(text[index]);

</script>

 

 


문자열1_개념04_문자수정.html

 

<script>

    /*
        [개념] 문자열 수정 시 주의점
            자바스크립트에서는 문자열을 변경할 수 없다.
            처음부터 새로 변수를 만들거나
            replace() 함수를 사용해야 한다.
    */

    // [문제] hello에서 e를 a로 변경하시오.

    // [방법1]
    let text = "hello";
    text[1] = "a";                      // 직접 수정은 불가능하다.
    document.write(text + "<br>");      // hello

    let newText = "";
    for(let i=0; i<text.length; i++) {
        if(text[i] == "e") {
            newText += "a";
        } else {
            newText += text[i];
        }
    }
    document.write(newText + "<br>");


    /*
        [개념] 문자열 교체
            let 변수 = "문자열";
            변수 = 변수.replace(교체전, 교체후);

            문자열의 일부를 교체할 때 사용한다.
    */
    // [방법2]
    text = text.replace("e", "a");
    document.write(text + "<br>");      // hallo

    text = "Hong's number is 010-1234-5678.";
    let result = text.replace("Hong's", "Kim's");
    document.write(result);

</script>

 

 


문자열1_개념05_삭제.html

 

<script>

    /*
        [문제]
            stNo는 학생 번호 배열이다.
            stName은 학생 이름 배열이다.
            두 배열은 한 세트이다.
            랜덤으로 학생 번호를 선택하고
            해당 번호의 학생데이터를 삭제하시오.
        [예시]
            r = 1002

            stNo = [1001, 1003, 1004]
            stName = ["김철수", "신정아", "이영희"]
    */

    let stNo = [1001, 1002, 1003, 1004];
    let stName = ["김철수" , "이만수" , "신정아" , "이영희"];

    let r = Math.floor(Math.random() * 4 ) + 1001;
    document.write("r = " + r + "<br>");

    for(let i = 0; i < stNo.length; i++){
        if(stNo[i] == r){
            stNo.splice(i , 1);
            stName.splice(i, 1);
        }
    }
    document.write("stNo = " + stNo + "<br>");
    document.write("stName = " + stName + "<br>");
   
</script>

 

 


문자열1_개념06_전체합.html

 

<script>

    /*
        [문제]
            아래 정보는 학생들의 데이터이다.
            각 학생들의 국어점수와 영어점수의 합을
            stTotal에 저장하시오.
        [정답]
            stTotal = [70, 100, 62, 53]
    */

    let stNo = [1001, 1002, 1003, 1004];
    let stName = ["김철수", "이만수", "신정아", "이영희"];
    let stKor = [10, 20, 30, 40];
    let stEng = [60, 80, 32, 13];
    let stTotal = [];

    let size = stNo.length;
    for(let i=0; i<size; i++) {
        let total = stKor[i] + stEng[i];
        stTotal.push(total);
    }
    document.write(stTotal);


   



</script>

 

 


문자열1_개념07_비교.html

 

<script>

    /*
        [문제]
            아래는 두 학생의 가위바위보 데이터이다.
            철수는 몇번 승리했는지 출력하시오.
        [정답]
            winCount = 3
    */

    let 철수 = ["가위", "바위", "바위",   "", "가위"];
    let 민수 = [  "", "가위", "바위", "가위",   ""];

    let winCount = 0;

    for(let i=0; i<철수.length; i++) {
        if(철수[i] == 민수[i]) {
            document.write("비겼다<br>");
        } else if(철수[i] == "가위" && 민수[i] == "") {
            document.write("철수가 이겼다.<br>");
            winCount += 1;
        } else if(철수[i] == "바위" && 민수[i] == "가위") {
            document.write("철수가 이겼다.<br>");
            winCount += 1;
        } else if(철수[i] == "" && 민수[i] == "바위") {
            document.write("철수가 이겼다.<br>");
            winCount += 1;
        } else {
            document.write("철수가 졌다.<br>");
        }
    }

    document.write("winCount = " + winCount);

</script>

 

 


문자열1_문제01_기본.html

 

<script>

    /*
        [문제]
            문자열 hello를 olleh로 출력하시오.
        [정답]
            olleh
    */

    let text = "hello";

    for(let i = 0; i < text.length; i++){
        document.write(text[text.length - i - 1]);
    }
    document.write("<br>");

    let temp = "" //임시 문자열을 생성해서 역순으로 저장
    for(let i = 0; i < text.length; i++){
        temp += text[text.length - 1 - i];
    }
    document.write("temp = " + temp + "<br>");

    for(let i = text.length - 1; i >= 0; i--){
        document.write(text[i] + " ");
        }
        document.write("<br>");
</script>

 

 


문자열1_문제02_암호만들기.html

 

<script>

    /*
        [문제]
            철수는 비밀번호는 아래와 같다.
            철수는 비밀번호를 보호하기 위해 비밀번호 글자 사이사이에
            알파벳을 a부터 순서대로 끼워넣었다.
            철수가 만든 비밀번호를 만들어보시오.
        [정답]
            qawbecrd1e2f3g4h
    */

    let password = "qwer1234";
    let sample = "abcdefghijklmnopqrstuvwxyz";
   
    let result = "" //빈 문자열을 생성

    for(let i = 0; i < password.length; i++){
        result += password[i];
        result += sample[i];
    }
    document.write("result = " + result + "<br>");
</script>

 

 


문자열1_문제03_암호풀기.html

 

<script>

    /*
        [문제]
            철수는 비밀번호는 아래와 같다.
            철수는 비밀번호를 보호하기 위해 비밀번호 글자 사이사이에
            알파벳을 a부터 순서대로 끼워 넣었다.
            이제 철수는 원래 비밀번호로 다시 변환해야 한다.
            암호화된 비밀번호를 원래대로 복구하시오.
        [정답]
            qwer1234
    */

    let password = "qawbecrd1e2f3g4h";
   
   
    for(let i = 0; i < password.length; i++){
        if(i % 2 == 0){
            document.write(password[i]);
        }
    }
    document.write("<br>");


</script>

 

 


문자열1_문제04_교환.html

 

<script>

    /*
        [문제]
            아래 배열은 학생들의 데이터이다.
            학생 두 명의 국어 점수가 서로 바뀌어서
            잘못 저장되었다.
            랜덤으로 번호 두 개를 저장 후,
            각 번호의 해당하는 국어점수를 교환 후 출력하시오.
        [예시]
            1001, 1003
            stKor = [30, 20, 10, 40]
    */

    let stNo = [1001, 1002, 1003, 1004];
    let stName = ["김철수", "이만수", "신정아", "이영희"];
    let stKor = [10, 20, 30, 40];
    let stEng = [60, 80, 32, 13];

    //랜덤번호 2개 생성

    let r1 = Math.floor(Math.random() * stKor.length);
    let r2 = Math.floor(Math.random() * stKor.length);
   
    let temp = stKor[r1];
    stKor[r1] = stKor[r2];
    stKor[r2] = temp;
    document.write(stKor)
    </script>

 

 


문자열1_문제05_일등.html

 

<script>

    /*
        [문제]
            아래 배열은 학생들의 데이터이다.
            학생 두 명의 국어 점수가 서로 바뀌어서
            잘못 저장되었다.
            랜덤으로 번호 두 개를 저장 후,
            각 번호의 해당하는 국어점수를 교환 하시오.
            이후 국어점수와 영어점수의 총합이 1등인 학생의 이름을 출력하시오.
        [예시]
            1001, 1003
            stKor = [30, 20, 10, 40]
            1등 = 이만수
    */

    let stNo = [1001, 1002, 1003, 1004];
    let stName = ["김철수", "이만수", "신정아", "이영희"];
    let stKor = [10, 20, 30, 40];
    let stEng = [60, 80, 32, 13];

    let r1 = Math.floor(Math.random() * stKor.length);
    let r2 = Math.floor(Math.random() * stKor.length);
    document.write(stNo[r1] + ", " + stNo[r2] + "<br>");
    //랜덤번호 2개 생성
    let temp = stKor[r1];
    stKor[r1] = stKor[r2];
    stKor[r2] = temp;
    document.write(`stKor =  [${stKor}]<br>`);
    //위치변경
    let max = 0;
    let maxid = 0;
    for(let i = 0; i < stKor.length; i++){
        let sum = stKor[i] + stEng[i];
        if(max < sum){
            max = sum;
            maxid = i;
        }
    }
    document.write(`1등 = ${stName[maxid]}<br>`);
   

</script>

 

 


문자열1_문제06_밸런스게임.html

 

<script>

    /*
        [문제]
            아래는 철수와 영희가 데이트 1주년을 기념하여
            벨런스 게임을 하기로 했다.
            선택은 전부 랜덤으로 하고
            철수와 영희가 몇 개 맞았는지 출력하시오.
        [예시]
            [문제]양념치킨 VS 후라이드치킨
            철수 = 양념치킨
            영희 = 후라이드치킨


            [문제]내 여친(남친)이 간첩인것을 알았다면? 신고한다 VS 신고 안한다 (단, 신고 포상금 5억)
            철수 = 신고 안한다 (단, 신고 포상금 5억)
            영희 = 신고 안한다 (단, 신고 포상금 5억)
            ...

            5개 맞았다!
    */

    let sample1 = [
        "양념치킨",
        "내 여친(남친)이 간첩인것을 알았다면? 신고한다",
        "짬뽕",
        "평생 겨울",
        "무없이 치킨먹기",
        "평생 컴퓨터없이 살기",
        "겨울에 에어컨",
        "아이스아메리카노"];

    let sample2 = [
        "후라이드치킨",
        "신고 안한다 (단, 신고 포상금 5억)",
        "짜장면",
        "평생 여름",
        "콜라없이 햄버거먹기",
        "평생 핸드폰없이 살기",
        "여름에 히터",
        "뜨거운아메리카노"];
       
    let 철수 = [];
    let 영희 = [];
    let total = 0;
    for(let i = 0; i < sample1.length; i++){
        let r1 = Math.floor(Math.random() * 2);
        let r2 = Math.floor(Math.random() * 2);
        if(r1 == r2) total++;
        document.write("[문제]" + sample1[i] + " vs " + sample2[i] + "<br>");
        if(r1 % 2 == 0) document.write("철수 = " + sample1[i] + "<br>");
        else document.write("철수 = " + sample2[i] + "<br>");
        if(r2 % 2 == 0) document.write("영희 = " + sample1[i] + "<br>");
        else document.write("영희 = " + sample2[i] + "<br>");
    }
    document.write(`${total}개 맞았다!!<br>`);

</script>

 

<script>

    /*
        [문제]
            아래는 철수와 영희가 데이트 1주년을 기념하여
            벨런스 게임을 하기로 했다.
            선택은 전부 랜덤으로 하고
            철수와 영희가 몇 개 맞았는지 출력하시오.
        [예시]
            [문제]양념치킨 VS 후라이드치킨
            철수 = 양념치킨
            영희 = 후라이드치킨


            [문제]내 여친(남친)이 간첩인것을 알았다면? 신고한다 VS 신고 안한다 (단, 신고 포상금 5억)
            철수 = 신고 안한다 (단, 신고 포상금 5억)
            영희 = 신고 안한다 (단, 신고 포상금 5억)
            ...

            5개 맞았다!
    */

    let sample1 = [
        "양념치킨",
        "내 여친(남친)이 간첩인것을 알았다면? 신고한다",
        "짬뽕",
        "평생 겨울",
        "무없이 치킨먹기",
        "평생 컴퓨터없이 살기",
        "겨울에 에어컨",
        "아이스아메리카노"];

    let sample2 = [
        "후라이드치킨",
        "신고 안한다 (단, 신고 포상금 5억)",
        "짜장면",
        "평생 여름",
        "콜라없이 햄버거먹기",
        "평생 핸드폰없이 살기",
        "여름에 히터",
        "뜨거운아메리카노"];
       
    let 철수 = [];
    let 영희 = [];
    let total = 0;
    for(let i = 0; i < sample1.length; i++){
        let r1 = Math.floor(Math.random() * 2);
        let r2 = Math.floor(Math.random() * 2);
        if(r1 == r2) total++;
        document.write("[문제]" + sample1[i] + " vs " + sample2[i] + "<br>");
        if(r1 % 2 == 0) document.write("철수 = " + sample1[i] + "<br>");
        else document.write("철수 = " + sample2[i] + "<br>");
        if(r2 % 2 == 0) document.write("영희 = " + sample1[i] + "<br>");
        else document.write("영희 = " + sample2[i] + "<br>");
    }
    document.write(`${total}개 맞았다!!<br>`);

</script>