ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

ํšŒ๊ณ 

https://programmers.co.kr/competitions/2165/2022-web-fe-first

 

2022 Dev-Matching: ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž(์ƒ๋ฐ˜๊ธฐ)

์ ‘์ˆ˜   22๋…„ 02์›” 21์ผ 10:00 ~ 03์›” 10์ผ 17:00 ํ…Œ์ŠคํŠธ   22๋…„ 03์›” 12์ผ 14:00 ~ 03์›” 12์ผ 17:00

programmers.co.kr

2022.03.12 Dev-Matching ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด์•˜๋‹ค.์šฐ๋ คํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹จ ํ…Œ์ŠคํŠธ์˜ ๋‚œ์ด๋„๊ฐ€ ํฌ๊ฒŒ ์–ด๋ ต์ง„ ์•Š์•˜์ง€๋งŒ ํ•œ๋™์•ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์— ์ต์ˆ™ํ•ด ์žˆ๋˜ ๋‚˜์—๊ฒŒ, ์˜ค๋žœ๋งŒ์— Vanilla JS๋งŒ์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์ด ์กฐ๊ธˆ ๋‚ฏ์„ค์—ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ๋’ค, ์–ด๋– ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งน๋ชฉ๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋ฐ˜์ด ๋˜๋Š” JS๋ฅผ ๋Š์ž„ ์—†์ด ํ•™์Šตํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์˜์ง€๋ฅผ ๋˜์ƒˆ๊ฒผ๋‹ค. ์ด์— ํ…Œ์ŠคํŠธ ๋„์ค‘ ์ค‘์š”ํ•˜๊ฑฐ๋‚˜ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์„ ๊ฐ„๋žตํ•˜๊ฒŒ ํฌ์ŠคํŒ…ํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

HTMLCollection์€ Array๊ฐ€ ์•„๋‹ˆ๋‹ค

ul ํƒœ๊ทธ ๋‚ด์— ๊ฐ li ํƒœ๊ทธ๋“ค์— ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์ฃผ๊ธฐ ์œ„ํ•ด, querySelectorAll() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  li ํƒœ๊ทธ์˜ ๋…ธ๋“œ ์ •๋ณด๋“ค์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ์ €์žฅํ•˜์˜€๋‹ค. 

 

ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ˆœํšŒํ•ด์ฃผ๊ธฐ ์œ„ํ•ด for() ๋ฌธ์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.์ฒ˜์Œ์—๋Š” ๋กœ์ง ์ƒ์˜ ๋ฌธ์ œ์ธ ์ค„ ์•Œ๊ณ  ์ฝ”๋“œ๋ฅผ ๊ณ„์† ์‚ดํŽด๋ณด๋ฉฐ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋กœ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ํ•ด ๋ณด์•˜์ง€๋งŒ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. ์ด์œฝ๊ณ  querySelectorAll() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ ์˜จ ๋…ธ๋“œ ๊ฐ์ฒด๋Š” HTMLCollection ์ž„์„ ๊ธฐ์–ตํ•ด ๋ƒˆ๋‹ค.

DOM ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์ธ HTMLCollection์€ DOM API๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ DOM ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์ด๋‹ค. HTMLCollection์€ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์ด๋ฉฐ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋‹ค.

์ฆ‰, HTMLCollection ๊ทธ ์ž์ฒด๋งŒ์œผ๋กœ ๋ฐฐ์—ด์˜ ํ”„๋กœํผํ‹ฐ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.for() ๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด (array).length์„ ์„ ์–ธํ•ด ์ค€๋‹ค.

 

length๋Š” Array.prototype์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ์ˆœ HTMLCollection ๊ฐ์ฒด๋งŒ์œผ๋กœ Array์˜ prototype์„ ์ƒ์† (ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹)๋ฐ›์•„์„œ ์“ฐ์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

์ด์— ํ•ด๋‹น HTMLCollection ๊ฐ์ฒด๋ฅผ Array.from() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ for()๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

fetch ํ•จ์ˆ˜์˜ ์‘๋‹ต ๊ฐ’์€ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

ํ‰์†Œ axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด HTTP Requests๋ฅผ ์ตํžˆ ์‚ฌ์šฉํ•˜์˜€๋‹ค.ํ•˜์ง€๋งŒ ํ•ด๋‹น ํ…Œ์ŠคํŠธ์—์„  axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ณ  ๋‚ด์žฅ Web API์ธ fetch ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋‹ค.

 

์ฒ˜์Œ์— ๋ณ„ ์ƒ๊ฐ ์—†์ด axios๋ฅผ ์“ธ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ async/await ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋‚ด์—์„œ API ํ˜ธ์ถœ์„ ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์–ด๋– ํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์˜€์ง€๋งŒ ์ง€์†์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

์ด์— ๊ฒฐ๊ณผ ๊ฐ’์„ ์ฝ˜์†”๋กœ ํ™•์ธํ•ด ๋ณด๋‹ˆ, ํ•˜๋‚˜์˜ ๊ธฐ์ˆ ์— ์–ฝ๋งค์ธ ๋‚˜์˜ ์‹ค์ˆ˜์ž„์„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

fetch ํ•จ์ˆ˜๋Š” HTTP ์‘๋‹ต์„ ๋‚˜ํƒ€๋‚ด๋Š” Response ๊ฐ์ฒด๋ฅผ ๋ž˜ํ•‘ํ•œ Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. fetch ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ๋ž˜ํ•‘ํ•˜๊ณ  ์žˆ๋Š” MIME ํƒ€์ž…์ด application/json์ธ HTTP ์‘๋‹ต ๋ชธ์ฒด๋ฅผ ์ทจ๋“ํ•˜๋ ค๋ฉด Response.prototype.json ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

์ฆ‰, fetch ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฒฐ๊ณผ๊ฐ’์€ ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ ์ฝ”๋“œ ์ƒ์—์„œ ์“ธ body๊ฐ’์ด ์•„๋‹Œ Response ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

์ด์— Response ๊ฐ์ฒด์—์„œ HTTP ์‘๋‹ต ๋ชธ์ฒด(response.body)๋ฅผ ์ทจ๋“ํ•˜์—ฌ ์—ญ์ง๋ ฌํ™”ํ•œ ๋ฐ˜ํ™˜๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ดResponse.prototype.json ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ  ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋Œ๊ณ  ๋Œ์•„ protoype...

์ด์ „ ํ”„๋กœ์ ํŠธ ๋„์ค‘ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋ฐ›์€ ์ ์ด ์žˆ๋‹ค.

 

"๋ณ‘ํ˜„๋‹˜, MDN์— ์žˆ๋Š” ํ”„๋กœํ† ํƒ€์ž…์ด ๋ญ”๊ฐ€์š”?"

 

์ด์— ๋Œ€ํ•ด 

 

"์ƒ์†์ด์š”!"

 

๋ผ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์–˜๊ธฐํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋˜ ์ ์ด ์žˆ์—ˆ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์€ ES6 ์ดํ›„๋ถ€ํ„ฐ ํด๋ž˜์Šค๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ธ ์ƒ์†์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต(๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ)์„ ์ œ๊ฑฐํ•œ๋‹ค.

 

์ด๋ฒˆ ํ…Œ์ŠคํŠธ์—์„œ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์€ ๋ชจ๋‘ prototype ๊ฐœ๋…๊ณผ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ๊ด€๋ จ์ด ์žˆ์—ˆ๋‹ค.

์ด์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐœ๋…์„œ๋ฅผ ๋ดค๋˜ ์ดˆ๋ฐ˜์˜ ๋งˆ์Œ ๊ฐ€์ง์œผ๋กœ ๋Œ์•„๊ฐ€ prototype ๊ฐœ๋…์— ๊ด€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ํฌ์ŠคํŒ…ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด Circle๊ณผ ๊ด€๋ จ๋œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž.

function Circle(radius) {
	this.radius = radius;
    this.getArea = function() {
      return Math.PI * this.radius ** 2;
    }
}

const circle1 = new Circle(1);
const circle2 = new Circle(2);

Circle ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋“  ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋Š” radius ํ”„๋กœํผํ‹ฐ์™€ getArea ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ์œ„ ์ฝ”๋“œ์—์„œ์˜ circle1๊ณผ circle2 ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” getArea ๋ฉ”์„œ๋“œ๋Š” ์ฐธ์กฐ(์ฃผ์†Œ)๊ฐ’์ด ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ์ค‘๋ณต ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

ํ•˜์ง€๋งŒ getArea ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ๋‚ด์šฉ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜์—ฌ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ๋™์ผํ•œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ค‘๋ณต ์†Œ์œ ํ•˜๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‚ญ๋น„ํ•œ๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ํผํฌ๋จผ์Šค์— ์•…์˜ํ–ฅ ๋ฏธ์น˜๋Š” ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

function Circle(radius) {
	this.radius = radius;
}

Circle.prototype.getArea = function() {
    return Math.PI * this.radius ** 2;
}

const circle1 = new Circle(1);
const circle2 = new Circle(2);

Circle ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋Š” ์ž์‹ ์˜ ํ”„๋กœํ† ํƒ€์ž…, ์ฆ‰ ์ƒ์œ„(๋ถ€๋ชจ) ๊ฐ์ฒด ์—ญํ• ์„ ํ•˜๋Š” Circle.prototpe์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

getArea ๋ฉ”์„œ๋“œ๋Š” ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜์–ด ํ”„๋กœํ† ํƒ€์ž…์ธ Circle.prototype์˜ ๋ฉ”์„œ๋“œ๋กœ ํ• ๋‹น๋˜์–ด ์žˆ์–ด, ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” radius ํ”„๋กœํผํ‹ฐ๋งŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ์†Œ์œ ํ•˜๊ณ  ๋‚ด์šฉ์ด ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋Š” ์ƒ์†์„ ํ†ตํ•ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๋ฐฐ์—ด ๊ฐ์ฒด ๋‚ด์— ํ”„๋กœํผํ‹ฐ length๋ฅผ HTMLCollection ๊ฐ์ฒด์—์„œ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ• ๋•Œ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ์›์ธ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

length ํ”„๋กœํผํ‹ฐ๋Š” Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž์ฒด [[Prototype]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ๋ฐ”์ธ๋”ฉ๋˜์–ด ์žˆ๋Š” Array.prototype์— ์ ์žฌ๋˜์–ด ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด ๊ฐ์ฒด์—์„œ length ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ, (ํ•ด๋‹น ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋ ค๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๋‹ค๋ฉด) [[Prototype]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์˜ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋ผ ์ž์‹ ์˜ ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž…์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

 

HTMLCollection ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋Š” Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ๊ธด ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— [[Prototype]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์˜ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋ผ ๊ฐ€๋”๋ผ๋„ Array.protoype ๋‚ด length ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.

 

๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  ๊ฒฐ๊ตญ ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ์„ค๋ช…์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

ํ”„๋กœํ† ํƒ€์ž…์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ง์ ‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ผ์€ ์•„์ง๊นŒ์ง€ ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋“ค์ด ์ตํžˆ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋“ค์ด ํ”„๋กœํ† ํƒ€์ž…์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํ•˜๊ฒŒ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฒˆ ํ…Œ์ŠคํŠธ์—์„œ์™€ ๊ฐ™์ด ๊ธฐ๋ณธ์ ์ธ ์‹ค์ˆ˜๋ฅผ ํ•˜๋Š” ์ผ์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ธฐ์ดˆ์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™์ž‘ ๋ฐฉ์‹์„ ํ•ญ์ƒ ์ˆ™์ง€ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜๋“ค์„ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์‹ ์ž… ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ์†Œ์–‘์ด ์•„๋‹์ง€ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ