์ด๋ฒ์ฃผ ์์์ผ๋ถํฐ ๋ถ๋ค๊ณ ์๋ ์ธ์คํ๊ทธ๋จ ํด๋ก ํ์ด์ง๋ฅผ ๋ง๋ฌด๋ฆฌํ์ด์-! ์ง์ง์ง๐ฅณ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ฉ์ธ ํ์ด์ง๋ฅผ ๋ง๋ค์๋ต๋๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ๋์ง ํฌ์คํ ์ผ๋ก ๋จ๊ฒจ๋๋ ค๊ณ ํด์. ๊ทธ๋ผ ๋ก๊ทธ์ธ ํ์ด์ง๋ถํฐ ๋ณด์์ฃ !๐๐ปโโ๏ธ
๐ ๊ฐ๋ฐ ๊ธฐ๊ฐ
22/08/22(์) ~ 22/08/26(๊ธ)
๐จ ๊ธฐ์
HTML/CSS
JavaScript
โจ ๊ตฌํ ๊ธฐ๋ฅ
1. ID, PW ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ๋ก๊ทธ์ธ ๋ฒํผ ํ์ฑํ
2. ๋๊ธ ์ถ๊ฐ/๋๊ธ ์ข์์/์ญ์
3. ID ๊ฒ์
4. ๋ชจ๋ฌ์ฐฝ
5. ๋ฐ์ํ
๋ก๊ทธ์ธ ๋ฒํผ์ด ํ์ฑํ๋์์ ๋์ ๊ทธ๋ ์ง ์์ ๋๋ฅผ ํจ์๋ก ๋ถ๋ฆฌํด ์ฌ์ฉํด์คฌ์ด์. ์ ๋ ฅ์ฐฝ value์ ๊ธธ์ด๊ฐ 0์ด์์ผ ๋๋ activateButton์ผ๋ก ๋ฒํผ์ ํ์ฑํ์์ผฐ๊ณ , ๊ทธ๋ ์ง ์์ ๋๋ disabledButton์ผ๋ก ๋ฒํผ์ ๋นํ์ฑํ์์ผ์ฃผ์์ด์.
์ ํจ์ฑ ๊ฒ์ฌ๋ ID๋ @
๊ฐ ๋ค์ด๊ฐ์ง ์์์ ๋ IDํ์ธ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , PW๋ 5๊ธ์ ์ด์์ด ์๋๋ฉด PWํ์ธ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ฌ์ค์. ์ ํจ์ฑ ๊ฒ์ฌ ์ญ์ ์๋์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ต๋๋ค!
// ๋ฒํผ ํ์ฑํ
const activateButton = function () {
$btnLogin.style.backgroundColor = "rgb(0, 149, 246, 1)";
$btnLogin.disabled = false;
$btnLogin.classList.add("btn-hoverEffect");
};
// ๋ฒํผ ๋นํ์ฑํ
const disabledButton = function () {
$btnLogin.style.backgroundColor = "rgb(0, 149, 246, 0.3)";
$btnLogin.disabled = true;
$btnLogin.classList.remove("btn-hoverEffect");
};
// ํ๊ธ์๋ผ๋ ์น๋ฉด ๋ฒํผ ํ์ฑํ์ํค๊ธฐ
const checkLength = function () {
if ($inputId.value.length > 0 && $inputPw.value.length > 0) {
activateButton();
} else {
disabledButton();
}
};
// input์ keyup ์ด๋ฒคํธ๋ฆฌ์ค๋
$inputId.addEventListener("keyup", checkLength);
$inputPw.addEventListener("keyup", checkLength);
์ค์ ์ธ์คํ๊ทธ๋จ์ ๋๊ธ์ฐฝ์ฒ๋ผ ๋๊ธ์ฐฝ์ ๋๊ธ์ ์ถ๊ฐํ ๋, ํ ๊ธ์ ์ด์ ์ ๋ ฅํด์ผ๋ง [๊ฒ์] ๋ฒํผ์ด ํ์ฑํ๋ ์ ์๋๋ก ํ์ด์. ๋ฒํผ์ ํ์ฑํ, ๋นํ์ฑํ๋ CSS ํด๋์ค๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๊ฒ์ผ๋ก ์กฐ์ ํด์ฃผ์์ด์. ๊ทธ๋ฆฌ๊ณ [๊ฒ์] ๋ฒํผ์ ๋๋ ์ ๋๋ฟ๋ง์๋๋ผ [Enter]๋ฅผ ๋๋ ์ ๋๋ ๋๊ธ์ด ํผ๋์ ์์ฑ๋ ์ ์๋๋ก ํด์ฃผ์์ต๋๋ค.
[Enter]๋ฅผ ๋๋ ์ ๋๋ ๋๊ธ์ด ์์ฑ๋๊ธฐ ์ํด์ ๋ addEventListener
๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ณ ๋ฏผ์ด์๋๋ฐ, <form>
์์ <input>
๊ณผ <button>
์ ๋ฃ์ด์คฌ์๊ธฐ์ ์ธ๋ฐ์๋ ๊ณ ๋ฏผ์ด์์์ ์๊ฒ๋์ด์! <form>
์์ <input>
๋ฐ์ค๊ฐ ํ๋์ผ ๊ฒฝ์ฐ, submit๋ฒํผ์ ํด๋ฆญํ์ง ์์๋ ์๋์ผ๋ก submit๋๊ธฐ ๋๋ฌธ์ด์ฃ ๐
๋๊ธ์ ์์ ๋ชจ์ต์ฒ๋ผ, ๋๊ธ์ ์์ฑํ์ ๋ ๊ฐ์ฅ ์์ ๋ฐ์ค์ ํ๋ํ๋์ ๋๊ธ ๋ฐ์ค๊ฐ ์ฐจ๋ก๋ก ๋ด๊ธฐ๊ฒ ํ์ด์. ํ๋ํ๋์ ๋๊ธ ๋ฐ์ค์๋ ๋๊ธ๊ณผ ์ข์์, ๊ทธ๋ฆฌ๊ณ ์ญ์ ์์ด์ฝ ์ด๋ฏธ์ง๊ฐ ๋ด๊ธฐ๊ฒํ๊ตฌ์.
const leaveComment = function (e) {
// ์๋ก๊ณ ์นจ ๋ฐฉ์ง
e.preventDefault();
// ํ๊ทธ ์์ฑ
const comment = document.createElement("p");
const wrapComment = document.createElement("div");
const likeIcon = document.createElement("img");
const deleteIcon = document.createElement("img");
// ๊ฐ ํ ๋น
comment.textContent = $inputChat.value;
likeIcon.src = "./src/icon/heart.png";
deleteIcon.src = "./src/icon/delete.png";
// ํด๋์ค ์ถ๊ฐ
comment.classList.add("text-comment");
likeIcon.classList.add("img-heart-comment");
deleteIcon.classList.add("img-delete-comment");
// ๋ถ๋ชจ์์์ ๋ฃ๊ธฐ
wrapComment.appendChild(comment);
wrapComment.appendChild(likeIcon);
wrapComment.appendChild(deleteIcon);
$commentBox.appendChild(wrapComment);
// ํ๋ฉด์ ๊ทธ๋ ค์ง๋ฉด ๋๊ธ์ฐฝ ๋ค์ ๋น์์ฃผ๊ธฐ
$inputChat.value = "";
};
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
e.preventDefault()
: ๋๊ธ์ ์ถ๊ฐํ ๋๋ง๋ค ํ๋ฉด์ ์๋ก๊ณ ์นจ์ ๋ง์์ค์.
๋๊ธ์ฐฝ์ ๋๊ธ์ ์ ๋ ฅํ์ ๋๋ง [๊ฒ์]๋ฒํผ์ด ํ์ฑํ๋ผ์.
$inputChat.addEventListener("keyup", () => {
if ($inputChat.value.length > 0) {
$btnChat.classList.add("btn-chat-effect");
} else {
$btnChat.classList.remove("btn-chat-effect");
});
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
- ๋จผ์ ๋ถํฌ๋ช ํ [๊ฒ์]๋ฒํผ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ ํด์ฃผ์์ด์.
- ๊ทธ๋ฆฌ๊ณ [๊ฒ์]๋ฒํผ์ด ํ์ฑํ๋์ ๋์ CSS ํด๋์ค(
btn-chat-effect
)๋ฅผ ๋ง๋ค์ด์ฃผ์๋ต๋๋ค.- ๋๊ธ์ฐฝ์ ํ ๊ธ์๋ผ๋ ์ ๋ ฅํ๋ค๋ฉด CSS ํด๋์ค(
btn-chat-effect
)๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ๋๊ธ์ฐฝ์ ํ ๊ธ์๋ ์ ๋ ฅํ์ง ์์๋ค๋ฉด ํด๋น CSS ํด๋์ค๋ฅผ ์ ๊ฑฐํด์ฃผ์์ด์.
[๊ฒ์]๋ฒํผ์ ๋๋ ์ ๋ ๋ฟ๋ง ์๋๋ผ, [Enter]๋ฅผ ๋๋ ์ ๋๋ ๋๊ธ์ด ์ถ๊ฐ๋๋๋ก ํฉ๋๋ค. ์ด๊ฑธ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ฌ์์ฃผ์ด์ผํ๋ค๊ณ ์๊ฐํ๋๋ฐ ๊ตณ์ด ๊ทธ๋ด ํ์๊ฐ ์์์ ์๊ฒ๋์ด์!
<form>
<input class="input-chat" type="text" placeholder="๋๊ธ ๋ฌ๊ธฐ..."/>
<button class="btn-chat">๊ฒ์</button>
</form>
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
<form>
์์<input>
๋ฐ์ค๊ฐ ํ๋์ผ ๊ฒฝ์ฐ, ์๋์ ๊ฒ์ ๋ฒํผ์ ํด๋ฆญํ์ง ์์๋ ์๋์ผ๋ก submit๋๋ต๋๋ค!
๋๊ธ์ ์ข์์๋ฅผ ๋๋ฅผ์๋(โค)์๊ณ , ์ข์์๋ฅผ ์์จ์๋(๐ค) ์์ด์. ๊ทธ๋ฆฌ๊ณ ๋๊ธ์ ์ญ์ ์ญ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์์ด์. ์ฒ์์๋ ํด๋ฆญํ ํํธ๋ง ๊ณจ๋ผ ๋ฐ๊ฟ์ฃผ๊ณ , ํด๋ฆญํ ๋๊ธ๋ง ์ญ์ ํด์ฃผ๋ ๊ฒ์ ๊ตฌํํ๋ ๊ฒ ์ฝ์ง ์์์ด์. ํด๋ฆญํ ์์๋ฅผ ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ด๋ฉฐ, ๋ง์ฝ ์ฐพ๋๋ผ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ ์์๋ง๋ค ์ด๋ป๊ฒ ๋ฌ์์ฃผ์ด์ผํ๋ ๊ณ ๋ฏผ์ด์๋ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉฐ ์ด๋ฒคํธ ์์์ ๋ํด ๋ฐฐ์ ์ด์. ๋๊ธ ๋ฐ์ค๋ค์ ํฌํจํ๋ ์ ์ฒด ๋ฐ์ค์ธ ๊ณตํต์ ์กฐ์ ์์์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ฌ์์ฃผ์ด์ ํด๋ฆญํ์ ๋ event.target
๋ก ํด๋ฆญํ ์์๊ฐ ๋ฌด์์ธ์ง ํ์ธํ ์ ์์์ด์. JS ๋ก์ง์ ์งค ๋, ์ค์ํ๊ฒ ๋ค๋ฃจ์ด์ง์ ์๊ฒ๋ผ์ ์ด๋ฒคํธ ์์๊ณผ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง๊ณผ ๊ฐ์ ๊ฐ๋
์ ๋ฐ๋ก ์ ๋ฆฌํด์ผ๊ฒ ๋จ ์๊ฐ์ด ๋ค์ด์!
const controlImg = function (e) {
// ๋๊ธ ์ข์์
if (e.target.getAttribute("src") == "./src/icon/heart.png") {
e.target.setAttribute("src", "./src/icon/fullHeart.png");
} else if (e.target.getAttribute("src") == "./src/icon/fullHeart.png") {
e.target.setAttribute("src", "./src/icon/heart.png");
}
// ๋๊ธ ์ญ์
if (e.target.className === "img-delete-comment") {
let parent = e.target.parentElement;
parent.remove();
}
};
// ๊ณตํต ์กฐ์์์์ ์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ฌ๊ธฐ
$commentBox.addEventListener("click", controlImg);
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
- ์ด๋ฒคํธ ์์
: ์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ด ๊ณตํต๋๋ ์กฐ์์์์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ฌ์์ฃผ์ด์e.target
์ผ๋ก ์ด๋ค ์์ ์์๋ฅผ ํด๋ฆญํ๋์ง ์ ์ ์์ด์.
getAttribute
์setAttribute
: src๊ฐ ๋ฌด์์ธ์ง ์์๋ด์ ํด๋ฆญํ ์์์ src๊ฐ ๋นํํธ ํ์ผ(๐ค)์ด๋ฉด ๊ฝ์ฐฌ ํํธ ํ์ผ(โค)๋ก ๋ฐ๊พธ์ด์ฃผ๊ณ , ํด๋ฆญํ ์์์ src๊ฐ ๊ฝ์ฐฌ ํํธ ํ์ผ(โค)์ด๋ฉด ๋นํํธ ํ์ผ(๐ค)๋ก ๋ฐ๊ฟ์ฃผ์์ด์.
parent.remove()
: ๋๊ธ์ ์ญ์ ํ ๋๋ ํด๋ฆญํ ์์์ ์กฐ์ ์์๋ฅผ ์ฐพ์ ์ญ์ ํด์ฃผ๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ด์.
์ฌ์ฉ์์ ID, ์ด๋ฆ, ๊ทธ๋ฆฌ๊ณ ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์๋์ฒ๋ผ ์์๋ก ๋ง๋ค์ด ๊ฐ์ฒด์ ํํ๋ก ๋ฐฐ์ด ์์ ์ ์ฅํด์ฃผ์์ด์.
const userData = [
{
userId: "apple_01",
userName: "์์ฝค๋ฌ์ฝค",
userImg: "./src/img/profile/apple.jpg",
},
// ์๋ต
]
๊ทธ๋ฆฌ๊ณ input์ฐฝ์ ์ ๋ ฅํ ๊ฐ๊ณผ ์ฌ์ฉ์์ ID ๋ฐ์ดํฐ๋ก ์ผ์นํ๋ ๊ฒ์ ์ฐพ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ์์ด์. ์๋ก ๋ง๋ ๋ฐฐ์ด์ ๋๋ฉฐ ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ๋ต๋๋ค.
const searchId = function () {
// ๊ฒ์ํ ๊ฒ๊ณผ ์ผ์นํ๋ ID๋ฅผ ์๋ก์ด ๋ฐฐ์ด์ ๋ด๊ธฐ
let result = idData.filter((v, i) => {
return v.userId.includes($searchBar.value);
});
// ์๋ก์ด ๋ฐฐ์ด์ ๋ด๊ธด ID๋ง ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๊ธฐ
result.forEach((v, i) => {
// ํ๊ทธ ์์ฑ
const wrapFiltered = document.createElement("div");
const wrapText = document.createElement("div");
const filteredImg = document.createElement("img");
const filteredId = document.createElement("span");
const filteredName = document.createElement("span");
// ํด๋์ค ๋ถ์ฌ
filteredImg.classList.add("filteredImg");
wrapFiltered.classList.add("wrapFiltered");
filteredId.classList.add("filteredId");
filteredName.classList.add("filteredName");
wrapText.classList.add("wrapText");
// ๊ฐ ๋ฃ๊ธฐ
filteredImg.src = v.userImg;
filteredId.innerText = v.userId;
filteredName.innerText = v.userName;
// ์์ ์์์ ์์ฐจ์ ์ผ๋ก ๋ฃ์ด์ฃผ๊ธฐ
wrapFiltered.appendChild(filteredImg);
wrapText.appendChild(filteredId);
wrapText.appendChild(filteredName);
wrapFiltered.appendChild(wrapText);
$filteredBox.appendChild(wrapFiltered);
});
};
header์ navํ๋กํ ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ๋ฉด ๋ณด์ด๋ ๋ชจ๋ฌ์ฐฝ์ธ ๋ฉ๋ด์์๋ฅผ ๋ง๋ค์ด์ฃผ์์ด์. ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์์ ๋๋ ์ด๋ ๋ถ๋ถ์ ํด๋ฆญํ๋ ๋ชจ๋ฌ์ด ๋ซํ๊ฒ ํด์ฃผ์์ด์.
const controlMenu = function (e) {
if (e.target.className === "img-navProfile") {
if ($wrapMenu.style.display === "none") {
$wrapMenu.style.display = "inline-block";
} else {
$wrapMenu.style.display = "none";
}
} else {
$wrapMenu.style.display = "none";
}
};
$body.addEventListener("click", controlMenu);
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
- ์ฒซ๋ฒ์งธ ์กฐ๊ฑด
: header์ ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ์ ๋์ ํด๋ฆญํ์ง ์์์ ๋๋ก ๋๋์ด ๋ฉ๋ด ๋ชจ๋ฌ์ display๋ฅผ ์กฐ์ ํด์ฃผ์์ด์.
- ๋๋ฒ์งธ ์กฐ๊ฑด
: ๋ฉ๋ด ๋ชจ๋ฌ์ด ๋ณด์ด๋ ์ํ์์ header์ ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ํด๋ฆญํ๋ฉด ๋ฉ๋ด ๋ชจ๋ฌ์ด ๋ซํ๊ฒ๋ ํ๊ธฐ ์ํด ํ์ ์กฐ๊ฑด์ ๋ฃ์ด์ฃผ์๋ต๋๋ค.
๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ฐ์ํ์น์ผ๋ก ๋ง๋ค์์ด์. ์ต๋ํ ์ธ์คํ๊ทธ๋จ๊ณผ ๋น์ทํ๊ฒ ๋ง๋๋ ค๊ณ ํ์ด์. ํ๋ฉด์ด ์ค์ด๋ฆ์ ๋ฐ๋ผ header๋ถ๋ถ์ ๋ณํ๊ฐ ์ปธ์ด์. ์ด๋ ์๊ฐ๋ถํฐ ๋ก๊ณ ์ nav์์ด์ฝ๋ค์ ์์น๋ ๊ณ ์ ๋๊ณ , ๊ฒ์์ฐฝ์ ํฌ๊ธฐ๋ ์ค์ด๋ค๋๋ผ๊ตฌ์. ๊ทธ๋์ ์ ๋ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ 3์ง์ ์ผ๋ก ๋๋์ด ์กฐ์ ํด์ฃผ์์ด์.
/* ํ๋ฉดํฌ๊ธฐ๊ฐ 1000px๋ณด๋ค ์์ ๋ */
@media (max-width: 1000px) {
.box-aside {
display: none;
}
header h1 {
position: absolute;
top: 15px;
left: 25px;
}
.bar-search {
left: 110px;
}
}
/* ํ๋ฉดํฌ๊ธฐ๊ฐ 800px๋ณด๋ค ์์ ๋ */
@media (max-width: 800px) {
.bar-search input {
width: 200px;
}
}
/* ํ๋ฉดํฌ๊ธฐ๊ฐ 760px๋ณด๋ค ์์ ๋ */
@media (max-width: 760px) {
.bar-search {
display: none;
}
.list-nav {
position: absolute;
top: 15px;
right: 25px;
}
header {
height: 65px;
}
}
๐๐ป ์ ๊น! ์ฝ๋ ์ค๋ช
- ํ๋ฉดํฌ๊ธฐ๊ฐ 1000px๋ณด๋ค ์์ ๋
: ๋ฉ์ธ ํ๋ฉด ์ค๋ฅธํธ์ 'ํ์๋์ ์ํ ์ถ์ฒ'๋ถ๋ถ์display : none
ํด์คฌ์ด์.
: ๋ฉ์ธ๋ก๊ณ ์ ์์น๋ ์ผ์ชฝ์ ๊ณ ์ ์์ผฐ์ด์.
- ํ๋ฉดํฌ๊ธฐ๊ฐ 800px๋ณด๋ค ์์ ๋
: header์ ๊ฒ์์ฐฝ ํฌ๊ธฐ๋ฅผ ์ค์์ด์.
- ํ๋ฉดํฌ๊ธฐ๊ฐ 760px๋ณด๋ค ์์ ๋
: ๊ฒ์์ฐฝ์ ์์ ๊ณ header์ค๋ฅธ์ชฝ์ nav๋ถ๋ถ์ ์์น๋ฅผ ๊ณ ์ ์์ผฐ์ด์.
JavaScript๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ๋จ๊ธฐ๊ฐ์ ์ค์ค๋ก ๊ตฌํํด๋ธ๊ฑด ์ฒ์์ด์์! ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ๋ฐ๋ผํ๋๊ฒ ์๋๋ผ ํผ์ ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค๋ฉฐ ๊ตฌํํด๋๋ค๋๊ฒ ์ ๋ง ๋ฟ๋ฏํ์ด์๐ ํ์ง๋ง ์ ์ฝ๋๋ฅผ ์ ๊ฐ ๋ด๋ ๊ต์ฅํ ์ง์ ๋ถํ๋ค๋ ์๊ฐ์ด ๋ค์ด์. ํจ์๋ฅผ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด ์ฌ์ฉํ์ง ๋ชปํ๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์ด ํํ์ด ๋ฆฌํฉํ ๋งํด๋๊ฐ ๊ณํ์ ๋๋ค๐๐ป ๋ณ์๋ช ๋ ์ข ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ์ฑ ์๊ฒ ๋ฐ๊พธ์ด์ฃผ๊ณ ์ถ์ด์. ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๊ณ ๋์ด ์๋๋ผ, ์ด๋ป๊ฒ ํ๋ฉด ๋ ํจ์จ์ ์ผ ์ ์๋์ง ๊ณ ๋ฏผํด๋ด์ผ๊ฒ ์ต๋๋ค๐ค
์๋ ํ์ธ์.
์ ๊ฐ ๊ตญ๋น ํ์ ์ผ๋ก ์ธ์คํ๊ทธ๋จ ์ ๋ง๋ค์ด๋ณด๊ณ ์๋๋ฐ
ํ๋ก ํธ๊ฐ ๋ง์ด ์ด๋ ต๋๋ผ๊ตฌ์ ใ ๋ช๊ฐ์ง ์ง๋ฌธ ๊ด์ฐฎ์๊น์!