/fe-postbox

Primary LanguageJavaScript

๐Ÿ“ฎ ๋นจ๊ฐ„ ์šฐ์ฒดํ†ต์„ ์ฐพ์•„๋ผ!

map

์šฐ์ฒดํ†ต ์กฐ๊ฑด

  • ์šฐ์ฒดํ†ต์˜ ๊ฐœ์ˆ˜๋Š” 2 ~ 4๊ฐœ ์‚ฌ์ด์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ์šฐ์ฒดํ†ต์˜ ์œ„์น˜๋Š” ๋งˆ์„์˜ ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์œ„์น˜ํ•˜๋„๋ก ํ•œ๋‹ค.
  • ์šฐ์ฒดํ†ต์˜ width๋Š” 10% ~ 25% ์‚ฌ์ด์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ์ „์ฒด ๋งˆ์„์—์„œ ์šฐ์ฒดํ†ต์ด ๋“ค์–ด๊ฐˆ ๋งˆ์„์˜ ์ธ๋ฑ์Šค๋ฅผ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ์ขŒํ‘œ 0 ~ 25% / 0 ~ 50%
    ์šฐ์ฒดํ†ต 10% ~ 25%
    ๋งˆ์„ ๋„“์ด 50% ~ (100% -์ขŒํ‘œ)

๋งˆ์„ ์กฐ๊ฑด

  • ๋งˆ์„์˜ ๊ฐœ์ˆ˜๋Š” ์šฐ์ฒดํ†ต์˜ ๊ฐœ์ˆ˜์˜ 2๋ฐฐ์—์„œ 3๋ฐฐ ์‚ฌ์ด์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋งˆ์„์— ๋„ˆ๋ฌด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก, ๋งˆ์„์˜ ๊ฐœ์ˆ˜๋ฅผ 4๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐœ์ˆ˜์˜ ๋งˆ์„์€ 1, 2, 3, 4 grid ์ค‘์— ๋žœ๋ค์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. (ex. ๋งˆ์„์˜ ๊ฐœ์ˆ˜๊ฐ€ 10๊ฐœ์ธ ๊ฒฝ์šฐ 1~8๊ฐœ๋Š” ๋Œ์•„๊ฐ€๋ฉฐ 4๊ฐœ์˜ ํ™”๋ฉด์— ๋“ค์–ด๊ฐ€๊ณ  ๋‚˜๋จธ์ง€ 2๊ฐœ๋Š” ๋“ค์–ด๊ฐˆ ์œ„์น˜๊ฐ€ ๋žœ๋ค์œผ๋กœ ์ •ํ•ด์ง„๋‹ค.)
  • ๋งˆ์„์˜ left, top ์ขŒํ‘œ๋Š” 0 ~ ๋ถ€๋ชจ ๋ฐ•์Šค์˜ ๊ฐ€๋กœ, ์„ธ๋กœ 1/2 ์ค‘์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ๋งˆ์„์˜ ๊ฐ€๋กœ, ์„ธ๋กœ๋Š” ๋ถ€๋ชจ ๋ฐ•์Šค์˜ ๊ฐ€๋กœ, ์„ธ๋กœ์˜ 1/2 ~ ๋ถ€๋ชจ๋ฐ•์Šค์˜ ๊ฐ€๋กœ, ์„ธ๋กœ - left, top ์ขŒํ‘œ ์ค‘์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.
  • ์šฐ์ฒดํ†ต์ด ๋“ค์–ด๊ฐ€๊ธฐ๋กœ ์ •ํ•ด์ง„ ๋งˆ์„์˜ ์ž์‹ ๋งˆ์„์˜ left, top ์ขŒํ‘œ๋Š” ์šฐ์ฒดํ†ต์˜ ์ตœ๋Œ€ ํฌ๊ธฐ ~ ๋ถ€๋ชจ ๋งˆ์„์˜ ๊ฐ€๋กœ, ์„ธ๋กœ 1/2 ์ค‘์—์„œ ๋žœ๋ค์œผ๋กœ ์ •ํ•œ๋‹ค.(์šฐ์ฒดํ†ต์ด ์™ผ์ชฝ ์ƒ๋‹จ์— ์žˆ์œผ๋ฏ€๋กœ)

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

โ”œโ”€โ”€ ๐Ÿ“ static
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ resources
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ css
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ reset.css
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ style.css
โ”‚   โ””โ”€โ”€ ๐Ÿ“ src
โ”‚       โ”œโ”€โ”€ ๐Ÿ“ controllers
โ”‚       โ”‚   โ””โ”€โ”€ postboxButton.js
โ”‚       โ”œโ”€โ”€ ๐Ÿ“ models
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“ data
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ town.js (json)
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ postbox.js (json)
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“ dataManager
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ town.js
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ postbox.js
โ”‚       โ”œโ”€โ”€ ๐Ÿ“ utils
โ”‚       โ”‚   โ””โ”€โ”€ util.js
โ”‚       โ”œโ”€โ”€ ๐Ÿ“ views
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“ components
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ town.js
โ”‚       โ”‚   โ”‚   โ””โ”€โ”€ postbox.js
โ”‚       โ”‚   โ”œโ”€โ”€ map.js
โ”‚       โ”‚   โ””โ”€โ”€ postboxInfo.js
โ”‚       โ””โ”€โ”€ main.js
โ””โ”€โ”€โ”€ index.html

DOM API ๊ตฌํ˜„

getElementByClassName

  • DFS ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ๋…ธ๋“œ๋กœ ๋“ค์–ด๊ฐ€ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.
  • parentElement์™€ className์„ ์ธ์ž๋กœ ๋ฐ›์•„ ํƒ์ƒ‰ ์‹œ์ž‘์ ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

getElementsByClassName

  • getElementByClassName๊ณผ ํƒ์ƒ‰ ๋ฐฉ์‹์€ ๊ฐ™์ง€๋งŒ ์ค‘์ง€ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.
  • ์ œ์ผ ์ž์‹ ๋…ธ๋“œ๋กœ ๋„์ฐฉํ–ˆ์„ ์‹œ ๋นˆ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ•ด๋‹น ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๊ณ  ๊ทธ ๋ฐฐ์—ด์— push ํ•˜๊ณ , ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  push ํ•˜๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ์žฌ๊ท€๋ฅผ ํƒˆ์ถœํ•˜๋ฉด ์ฐพ์€ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ๋ฐ˜ํ™˜๋œ๋‹ค.

sort ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

  • ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n log n)์ด๊ณ , ๋น„๊ต์  ๊ตฌํ˜„์ด ๋ณต์žกํ•˜์ง€ ์•Š์€ ๋ณ‘ํ•ฉ์ •๋ ฌ๋กœ ๊ตฌํ˜„