[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 2์ฃผ์ฐจ ํšŒ๊ณ ๋ก ch.2 ์‹ค์Šต ๋ฌธ์ œ ํ’€์ด (4, 5๋ฒˆ ๋ฌธ์ œ ์ •๋ฆฌ ํ•ด์•ผ ํ•จ..)

2023. 5. 14. 20:50ใ†Study_Develop/ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ๋ถ€ํŠธ์บ ํ”„

๋ฐ˜์‘ํ˜•

 

[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ]

2์ฃผ์ฐจ ํšŒ๊ณ ๋ก 2๋‘๋ฒˆ์งธ !

 

๋ณธ ๊ธ€์—์„œ๋Š” ์‹ค์Šต, ํ€ด์ฆˆ๋กœ ๋‚˜์˜จ ๋ฌธ์ œ๋ฅผ

ํ’€์ดํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค..

 

๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹  ์ฝ”๋“œ๋„ 

์ผ๋ถ€ ์ฐธ๊ณ ํ•ด์„œ 

์ž‘์„ฑํ•œ ํ’€์ด ์ฝ”๋“œ๋“ค ์ด๋‹ค..

 

 

๊ทธ๋ฆฌ๊ณ  ํšŒ๊ณ ์— ์•ž์„œ ์œ ์šฉํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์†Œ๊ฐœ!!

๊ทธ๋™์•ˆ Visual Studio Code ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ

์ฝ”๋“œ ์ •๋ ฌํ•  ๋•Œ

๋‹จ์ถ•ํ‚ค ctrl + k + f๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ 

์™œ์ธ์ง€ ๋ชจ๋ฅด๊ฒŒ ์ด๊ฒŒ ์ž˜ ์•ˆ๋จน์„ ๋•Œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋˜ ๋„์ค‘

์ข‹์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐœ๊ฒฌ!

 

๋‹จ์ถ•ํ‚ค ๊นŒ๋จน์„๊นŒ๋ด

์ €์žฅํ•ด๋‘๋Š” ์šฉ์ด๊ธด ํ•˜๋‹ค ใ…‹ใ…Ž

 

Visual Studio Code์—์„œ ์ž๋™์ค„๋งž์ถค ํ•˜๋Š” ๋ฐฉ๋ฒ• !

 

๋“œ๋ ˆ๊ทธ ํ•œ ์˜์—ญ์„ Ctrl + Shift +B ๋‹จ์ถ•ํ‚ค ์‚ฌ์šฉ!!

 

 


โ“๋ฌธ์ œ1 . ์ˆซ์ž Up and Down ๊ฒŒ์ž„โ“

 

let answer = Math.floor(Math.random() * 10 + 1);
    //or Math.floor(Math.random() * 11)  11๋ฏธ๋งŒ์˜ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๊ธฐ๋•Œ๋ฌธ์— 10๊นŒ์ง€๋‚˜์˜ต๋‹ˆ๋‹ค.
    console.log(answer);
    //๋ฌดํ•œ ๋ฐ˜๋ณต์„ ์ด์šฉํ•˜์—ฌ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    //๊ผญ ๋ฌดํ•œ ๋ฐ˜๋ณต์ด ์ข…๋ฃŒ๋  ์กฐ๊ฑด๋ฌธ์„ ๋„ฃ์–ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
    while (1) {
        let guessValue = prompt("UP and DOWN ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค!");
        if (guessValue == "q" || guessValue == "๊ทธ๋งŒ") {
            alert("ํฌ๊ธฐํ•˜์…จ์Šต๋‹ˆ๋‹ค.");
            break;
        } else if (Number(guessValue) === answer) {
            alert(`${answer}!! ์ •๋‹ต์ž…๋‹ˆ๋‹ค >_<`);
            break;
        } else if (Number(guessValue) > answer) {
            alert("Down");
        } else if (Number(guessValue) < answer) {
            alert("Up");
        }
        //if๋ฌธ์„ ๋ฌดํ•œ๋ฐ˜๋ณตํ•˜๋ฉด์„œ Down์ด ๋‚˜์˜ค๊ฑฐ๋‚˜ Up์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉด ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๊ณ„์†์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        //์ž…๋ ฅ๋œ๊ฐ’์ด ์ข…๋ฃŒ๊ฑฐ๋‚˜ ์ •๋‹ต์„ ๋งž์ถ”๊ฒŒ ๋˜๋ฉด break๋ฅผ ๊ฑธ์–ด์„œ ๋ฌดํ•œ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.
        //break: ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ์กฐ๊ฑด๋ฌธ์—์„œ break๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์ด ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
    }

 

๋‚ด๊ฐ€ ํ‘ผ ํ’€์ด๋Š” ์•„๋‹ˆ๊ณ , 

๊ฐ•์‚ฌ๋‹˜์ด ์˜ฌ๋ ค์ฃผ์‹  ํ’€์ด ์ฝ”๋“œ์ด๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ!

 

โ— ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด

`${...}`

๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„์‹์„ ๋„ฃ์œผ๋ฉด,

ํ‘œํ˜„์‹์ด ๋ฌธ์ž์—ด ์•ˆ์—์„œ ๊ณ„์‚ฐ๋œ๋‹ค.

 

console.log(`ํ‘œํ˜„์‹ 273+52์˜ ๊ฐ’์€ ${273+52}์ž…๋‹ˆ๋‹ค..!`)

๊ฒฐ๊ณผ>

โ— Javascript prompt()

prompt(๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด, ๊ธฐ๋ณธ ์ž…๋ ฅ ๋ฌธ์ž์—ด)

        let guessValue = prompt("UP and DOWN ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค!", "์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");

 

 

โ“๋ฌธ์ œ2 . HTML ์š”์†Œ ๋‚ด์šฉ ๋ณ€๊ฒฝํ•˜๊ธฐโ“

 

 

<body>
        <img src="../image/bigmouse.jpeg" alt="๋น…๋งˆ์šฐ์Šค" id="img" style="width: 50px;">
        <ul>
            <li>์ด์ƒํ•œ ๋ณ€ํ˜ธ์‚ฌ ์šฐ์˜์šฐ</li>
            <li>๋“œ๋ผ๋งˆ</li>
            <li>15์„ธ ์ด์ƒ</li>
        </ul>
        <button onclick="imgJs()">js๋ฐ”๊พธ๊ธฐ</button>
        <button onclick="imgJquery()">jquery๋ฐ”๊พธ๊ธฐ</button>

        <script>
            const img = document.querySelector('#img')

            function imgJs() {
                img.setAttribute('alt', '์ด์ƒํ•œ์šฐ์˜์šฐ')

                img.setAttribute('src', '../wooyoungwoo.jpg')
                img.style = 'width:200px'
            }
            function imgJquery() {
                $('#img').attr("src", "../wooyoungwoo.jpg");
                $('#img').css('width', '200px')
            }
        </script>
    </body>

 


 

โ“๋ฌธ์ œ2 . HTML ์š”์†Œ ์ƒ์„ฑ/์ถ”๊ฐ€ํ•˜๊ธฐโ“

ํ’€์ด 1. ํ•˜๋“œ์ฝ”๋”ฉํ•˜๊ธฐ>

<article  class="article-box" >
            <img src="../image/icecrea1.png" class="img-box">
            <h3 class="text-center">Top1</h3>
            <div class="text-center">๋‚ด๊ฐ€ ์•„์ธ์ŠˆํŽ˜๋„ˆ?!</div>
        </article>

        <article  class="article-box">
            <img src="../image/icecream2.png" class="img-box">
            <h3 class="text-center" >Top2</h3>
            <h3 class="text-center">์—„๋งˆ๋Š” ์™ธ๊ณ„์ธ</h3>
        </article>

        <article class="article-box">
            <img src="../image/icecream3.png" class="img-box">
            <h3 class="text-center" >Top3</h3>
            <h3 class="text-center">๋ฏผํŠธ ์ดˆ์ฝœ๋ฆฟ ์นฉ</h3>
        </article>

 

 

ํ’€์ด 2. js ์ด์šฉํ•˜๊ธฐ>

 const icecreams = [
                    '๋‚ด๊ฐ€ ์•„์ธ์ŠˆํŽ˜๋„ˆ?!',
                    '์—„๋งˆ๋Š” ์™ธ๊ณ„์ธ',
                    '๋ฏผํŠธ ์ดˆ์ฝœ๋ฆฟ ์นฉ',
                    '๋‰ด์š• ์น˜์ฆˆ์ผ€์ดํฌ',
                    '์•„์ด์Šค ์ดˆ๋‹น์˜ฅ์ˆ˜์ˆ˜',
                    '์ดˆ์ฝœ๋ฆฟ ๋ฌด์Šค',
                    '์ฒด๋ฆฌ์ฅฌ๋นŒ๋ ˆ',
                    '๋ฎค! ๋„Œ ๋‚ด๊ฑฐ์•ผ',
                    '์˜ค๋ ˆ์˜ค ์ฟ ํ‚ค ์•ค ํฌ๋ฆผ'
                ];
                
for(let i = 0; i < icecreams.length; i++) {
        const article = document.createElement('article')
        article.classList.add('article-box')
        
        const img = document.createElement('img')
        img.setAttribute('src', `../image/icecream${i + 1}.png`)
        img.classList.add('img-box')

        const h3 = document.createElement('h3')
        h3.textContent = `Top${i+1}`
        h3.classList.add('text-center')

        const div = document.createElement('div')
        div.textContent = icecreams[i]
        div.classList.add('text-center')
       
        const box = document.querySelector('.text-center')
        box.append(article)
    
         article.append(img, h3, div)
      }

 

ํ’€์ด 3. jQuery ์ด์šฉ>

<h6 class="text-center">์ด๋‹ฌ์˜ ๋ง› BEST9</h6><br/>
        <section class="text-center"></section>
        <script>
            $(document).ready(function () {
                const section = $('section');
                const icecreams = [
                    '๋‚ด๊ฐ€ ์•„์ธ์ŠˆํŽ˜๋„ˆ?!',
                    '์—„๋งˆ๋Š” ์™ธ๊ณ„์ธ',
                    '๋ฏผํŠธ ์ดˆ์ฝœ๋ฆฟ ์นฉ',
                    '๋‰ด์š• ์น˜์ฆˆ์ผ€์ดํฌ',
                    '์•„์ด์Šค ์ดˆ๋‹น์˜ฅ์ˆ˜์ˆ˜',
                    '์ดˆ์ฝœ๋ฆฟ ๋ฌด์Šค',
                    '์ฒด๋ฆฌ์ฅฌ๋นŒ๋ ˆ',
                    '๋ฎค! ๋„Œ ๋‚ด๊ฑฐ์•ผ',
                    '์˜ค๋ ˆ์˜ค ์ฟ ํ‚ค ์•ค ํฌ๋ฆผ'
                ];
                for (let i = 1; i < 10; i++) {
                    const article = $('<article></article').addClass('article-box');
                    const img = $('<img></img>')
                        .addClass('img-box')
                        .attr('src', `../image/icecream${i}.png`)
                    const h3 = $('<h3></h3>')
                        .addClass('text-center')
                        .text(`Top${i}`);
                    const div = $('<div></div>')
                        .addClass('text-center')
                        .text(icecreams[i - 1]);
                    article.append(img, h3, div)
                    section.append(article);
                }

            })

 

์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ!

 

โ— append()์™€ appdendChild()์˜ ์ฐจ์ด?

 

- append ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋…ธ๋“œ ๊ฐ์ฒด (Node object)๋‚˜ DOMString(text)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹ ์š”์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- appendChild ๋ฉ”์„œ๋“œ๋Š” append ๋ฉ”์„œ๋“œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์˜ค์ง Node๊ฐ์ฒด๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ append ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…ธ๋“œ์™€ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด์—,

appendChild ๋ฉ”์„œ๋“œ๋Š” ํ•œ๋ฒˆ์— ์˜ค์ง ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋งŒ 

์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์•„๋ž˜ ๋งํฌ ์ฐธ์กฐ!

 

https://webruden.tistory.com/634

 

[Javascript] append vs appendChild ์ฐจ์ด์  (์ดˆ๊ฐ„๋‹จ)

append์™€ appendChild ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋‘ ๋ถ€๋ชจ ๋…ธ๋“œ์— ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฉ”์„œ๋“œ์—๋„ ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋‘ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ณ  ๊ฐ„

webruden.tistory.com


 

 

โ“๋ฌธ์ œ3 . ๊ฐ„๋‹จ ๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐโ“

 

<body>

    <label for="value1">๊ฐ’1: </label>
    <input type="number" id="value1">
    <label for="value2">๊ฐ’2: </label>
    <input type="number" id="value2">
    <label for="calc">์—ฐ์‚ฐ์ž: </label>
    <input type="text" id="calc">

    <button onClick="calc()">๊ณ„์‚ฐ</button>
    <button onClick="reset()">์ดˆ๊ธฐํ™”</button>

    <label for="result">๊ฒฐ๊ณผ: </label>
    <input type="number" id="result" disabled/>

</body>
function calc(){
        //ํƒ€์ž…์ด ๋ฌธ์ž์ธ ์ˆซ์ž์ผ ๊ฒฝ์šฐ ํ˜•๋ณ€ํ™˜์€ + ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.
        //์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ํ˜•๋ณ€ํ™˜ํ•  ๋•Œ๋Š” ์ˆซ์ž + ''
        const val1=+document.getElementById('value1').value
        const val2=+document.getElementById('value2').value
        const calc=document.getElementById('calc').value
        console.log(val1, val2, calc)

        let result;    
        if (calc === '+') {
            result = val1 + val2;
        } else if (calc === '-') {
            result = val1 - val2;
        } else if (calc === '/') {
            result = val1 / val2;
        } else if (calc === '*') {
            result = val1 * val2;
        }else{
            result='์˜ค๋ฅ˜๋ฐœ์ƒ'
        }
        document.getElementById('result').value=result;

    }
    function reset() {
            document.getElementById('val1').value = ''
            document.getElementById('val2').value = ''
            document.getElementById('calc').value = ''
            document.getElementById('result').value = ''
        }

 

์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ!

 

โ— label ?

 

- label์€ ํผ์˜ ์–‘์‹์— ์ด๋ฆ„ ๋ถ™์ด๋Š” ํƒœ๊ทธ์ด๋‹ค.

 

- ์ฃผ์š” ์†์„ฑ์€ for ์ด๋‹ค. label ์˜ for์˜ ๊ฐ’๊ณผ ์–‘์‹์˜ id์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์—ฐ๊ฒฐ๋œ๋‹ค.

 

- label์„ ํด๋ฆญํ•˜๋ฉด,์—ฐ๊ฒฐ๋œ์–‘์‹์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฑฐ๋‚˜,

์ฒดํฌ๋ฅผ ํ•˜๊ฑฐ๋‚˜,

์ฒดํฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค. 

 

โ— input type?

- input ํƒœ๊ทธ์˜ typ์„ number๋กœ ํ•˜๋ฉด ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์†Œ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด, step์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, step์˜ ๊ฐ’์„ 0.01๋กœ ํ•˜๋ฉด ์†Œ์ˆ˜ ๋‘˜์งธ์ž๋ฆฌ ๊นŒ์ง€ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

https://www.codingfactory.net/13397

 

HTML / input / number / ์ˆซ์ž ์ž…๋ ฅํ•˜๋Š” ์–‘์‹

input type='number' input ํƒœ๊ทธ์˜ type์„ number๋กœ ํ•˜๋ฉด ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. <!doctype html> <html lang='ko'> <head> <meta charset='utf-8'> <title>JavaScript</title> <style> * { font-family: Consolas, monospace; font-size: 24px; } </style>

www.codingfactory.net

 


 

 

โ“๋ฌธ์ œ4 . ๋ฐฉ๋ช…๋ก ๋งŒ๋“ค๊ธฐโ“

 

 

 

 

 


 

 

โ“๋ฌธ์ œ5 . ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ๊ฐ’์„ 3ํšŒ ์ถœ๋ ฅํ•˜๊ธฐโ“

 

 

'Study_Develop > ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ๋ถ€ํŠธ์บ ํ”„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 4์ฃผ์ฐจ ํšŒ๊ณ ๋ก ch. 1 Node.js, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ๋ถ„ํ•ด ํ• ๋‹น, ...์—ฐ์‚ฐ์ž, rest  (0) 2023.05.21
[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 3์ฃผ์ฐจ ํšŒ๊ณ ๋ก  (1) 2023.05.14
[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 2์ฃผ์ฐจ ์ˆ˜์—…๋‚ด์šฉ ํšŒ๊ณ ๋ก ch.1 -Javascript ์ž๋ฃŒํ˜•, ํ‘œ์ค€๊ฐ์ฒด, DOM, ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ, jQuery ๋ฉ”์†Œ๋“œ, jQuery ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ(feat. ์„œ์šธ ์ ์‘๊ธฐ)  (0) 2023.05.03
[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 1์ฃผ์ฐจ ํšŒ๊ณ ๋ก(feat.ํ—˜๋‚œํ•œ ์„œ์šธ์‚ด์ด)  (12) 2023.04.28
[ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž ๋ถ€ํŠธ์บ ํ”„ 7๊ธฐ] 0์ฃผ์ฐจ feat. ํ•ฉ๊ฒฉ ํšŒ๊ณ ๋ก  (0) 2023.04.21