๊ธ€

[AngularJS] ngRepeat scope ์ƒ์„ฑ

AngularJS์˜ ngRepeat ์†์„ฑ์€ ๋ฐ˜๋ณต ์ˆ˜ํ–‰์„ ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์˜ˆ์ƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด ๋ผ๋””์˜ค ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด๋„ $scope.selected ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ngRepeat์ด ์ƒˆ๋กœ์šด scope๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. AngularJS์—์„œ ์ž์‹ scope์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋ถ€๋ชจ scope์˜ ๋™๋ช… ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Œ€ํ–ˆ๋˜ mainCtrl์˜ selected๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๊ฐ„๋‹จํ•˜๋‹ค. $parent๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. $parent๋Š” ๋ถ€๋ชจ scope์˜์—ญ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์šฐ๋ฆฌ์˜ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค. ๋‘˜์˜ ์ฐจ์ด์ ์€ $parent์˜ ์œ ๋ฌด ๋ฟ์ด๋‹ค. ์ด๋ฒˆ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์ƒˆ์‚ผ ๋ช…์„ธ๋ฅผ ์ž˜ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฐธ๊ณ  ๋งํฌ:  https://docs.angularjs.org/api/ng/directive/ngRepeat

[์นด์นด์˜ค] 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ3(์บ์‹œ) ํ’€์ด using Javascript

์นด์นด์˜ค 2017๋…„ ํ•˜๋ฐ˜๊ธฐ ์‹ ์ž… ๊ณต์ฑ„ 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ 3๋ฒˆ ํ’€์ด. ๋ฌธ์ œ3. ์บ์‹œ(๋‚œ์ด๋„: ํ•˜) ์ง€๋„๊ฐœ๋ฐœํŒ€์—์„œ ๊ทผ๋ฌดํ•˜๋Š” ์ œ์ด์ง€๋Š” ์ง€๋„์—์„œ ๋„์‹œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•ด๋‹น ๋„์‹œ์™€ ๊ด€๋ จ๋œ ๋ง›์ง‘ ๊ฒŒ์‹œ๋ฌผ๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด ๋ณด์—ฌ์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ํ…Œ์ŠคํŒ… ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์–ดํ”ผ์น˜๋Š” ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•˜๊ธฐ ์ „ ๊ฐ ๋กœ์ง์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ธก์ •์„ ์ˆ˜ํ–‰ํ•˜์˜€๋Š”๋ฐ, ์ œ์ด์ง€๊ฐ€ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ดํ”ผ์น˜๋Š” ์ œ์ด์ง€์—๊ฒŒ ํ•ด๋‹น ๋กœ์ง์„ ๊ฐœ์„ ํ•˜๋ผ๊ณ  ๋‹ฆ๋‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์˜€๊ณ , ์ œ์ด์ง€๋Š” DB ์บ์‹œ๋ฅผ ์ ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์–ผ๋งˆ๋กœ ํ•ด์•ผ ํšจ์œจ์ ์ธ์ง€ ๋ชฐ๋ผ ๋‚œ๊ฐํ•œ ์ƒํ™ฉ์ด๋‹ค. ์–ดํ”ผ์น˜์—๊ฒŒ ์‹œ๋‹ฌ๋ฆฌ๋Š” ์ œ์ด์ง€๋ฅผ ๋„์™€, DB ์บ์‹œ๋ฅผ ์ ์šฉํ•  ๋•Œ ์บ์‹œ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์‹คํ–‰์‹œ๊ฐ„ ์ธก์ • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ํ˜•์‹ ์บ์‹œ ํฌ๊ธฐ( cacheSize )์™€ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด(cities)์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. cacheSize ๋Š” ์ •์ˆ˜์ด๋ฉฐ, ๋ฒ”์œ„๋Š” 0 ≦ cacheSize ≦ 30 ์ด๋‹ค. cities๋Š” ๋„์‹œ ์ด๋ฆ„์œผ๋กœ ์ด๋ค„์ง„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ, ์ตœ๋Œ€ ๋„์‹œ ์ˆ˜๋Š” 100,000๊ฐœ์ด๋‹ค. ๊ฐ ๋„์‹œ ์ด๋ฆ„์€ ๊ณต๋ฐฑ, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž ๋“ฑ์ด ์—†๋Š” ์˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋„์‹œ ์ด๋ฆ„์€ ์ตœ๋Œ€ 20์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ถœ๋ ฅ ํ˜•์‹ ์ž…๋ ฅ๋œ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ, “์ด ์‹คํ–‰์‹œ๊ฐ„”์„ ์ถœ๋ ฅํ•œ๋‹ค. ์กฐ๊ฑด ์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU(Least Recently Used) ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. cache hit ์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 1์ด๋‹ค. cache miss ์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 5์ด๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋ฌธ์ œ ์„ค๋ช…์€ ์•„๋ž˜ ์นด์นด์˜ค ๊ณต์‹ ๋ธ”๋กœ๊ทธ ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/ ๋ฌธ์ œ ํ’€์ด ์ด๋ฒˆ ๋ฌธ์ œ๋Š” LR...

[์นด์นด์˜ค] 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ2(๋‹คํŠธ ๊ฒŒ์ž„) ํ’€์ด using Javascript

์ด๋ฏธ์ง€
์นด์นด์˜ค 2017๋…„ ํ•˜๋ฐ˜๊ธฐ ์‹ ์ž… ๊ณต์ฑ„ 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ 2๋ฒˆ ํ’€์ด. ๋ฌธ์ œ2. ๋‹คํŠธ ๊ฒŒ์ž„(๋‚œ์ด๋„: ํ•˜) ์นด์นด์˜คํ†ก์— ๋œฌ ๋„ค ๋ฒˆ์งธ ๋ณ„! ์‹ฌ์‹ฌํ•  ๋•? ์นด์นด์˜คํ†ก ๊ฒŒ์ž„๋ณ„~ ์นด์นด์˜คํ†ก ๊ฒŒ์ž„๋ณ„์˜ ํ•˜๋ฐ˜๊ธฐ ์‹ ๊ทœ ์„œ๋น„์Šค๋กœ ๋‹คํŠธ ๊ฒŒ์ž„์„ ์ถœ์‹œํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์€ ๋‹คํŠธํŒ์— ๋‹คํŠธ๋ฅผ ์„ธ ์ฐจ๋ก€ ๋˜์ ธ ๊ทธ ์ ์ˆ˜์˜ ํ•ฉ๊ณ„๋กœ ์‹ค๋ ฅ์„ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์œผ๋กœ, ๋ชจ๋‘๊ฐ€ ๊ฐ„๋‹จํžˆ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ“ ์ž…์‚ฌํ•œ ๋ฌด์ง€๋Š” ์ฝ”๋”ฉ ์‹ค๋ ฅ์„ ์ธ์ •๋ฐ›์•„ ๊ฒŒ์ž„์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ธ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์„ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์€ ์ด 3๋ฒˆ์˜ ๊ธฐํšŒ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ ๊ธฐํšŒ๋งˆ๋‹ค ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ ์ˆ˜๋Š” 0์ ์—์„œ 10์ ๊นŒ์ง€์ด๋‹ค. ์ ์ˆ˜์™€ ํ•จ๊ป˜ Single(S), Double(D), Triple(T) ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ  ๊ฐ ์˜์—ญ ๋‹น์ฒจ ์‹œ ์ ์ˆ˜์—์„œ 1์ œ๊ณฑ, 2์ œ๊ณฑ, 3์ œ๊ณฑ (์ ์ˆ˜^1 , ์ ์ˆ˜^2 , ์ ์ˆ˜^3 )์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค. ์˜ต์…˜์œผ๋กœ ์Šคํƒ€์ƒ(*) , ์•„์ฐจ์ƒ(#)์ด ์กด์žฌํ•˜๋ฉฐ ์Šคํƒ€์ƒ(*) ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜์™€ ๋ฐ”๋กœ ์ „์— ์–ป์€ ์ ์ˆ˜๋ฅผ ๊ฐ 2๋ฐฐ๋กœ ๋งŒ๋“ ๋‹ค. ์•„์ฐจ์ƒ(#) ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜๋Š” ๋งˆ์ด๋„ˆ์Šค๋œ๋‹ค. ์Šคํƒ€์ƒ(*)์€ ์ฒซ ๋ฒˆ์งธ ๊ธฐํšŒ์—์„œ๋„ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์Šคํƒ€์ƒ(*)์˜ ์ ์ˆ˜๋งŒ 2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ ) ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ๋Š” ๋‹ค๋ฅธ ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์Šคํƒ€์ƒ(*) ์ ์ˆ˜๋Š” 4๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ ) ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ๋Š” ์•„์ฐจ์ƒ(#)์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์•„์ฐจ์ƒ(#)์˜ ์ ์ˆ˜๋Š” -2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 5๋ฒˆ ์ฐธ๊ณ ) Single(S), Double(D), Triple(T)์€ ์ ์ˆ˜๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค. ์Šคํƒ€์ƒ(*), ์•„์ฐจ์ƒ(#)์€ ์ ์ˆ˜๋งˆ๋‹ค ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. 0~10์˜ ์ •์ˆ˜์™€ ๋ฌธ์ž S, D, T, *, # ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋  ์‹œ ์ด์ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ผ. ์ž…๋ ฅ ํ˜•์‹ “์ ์ˆ˜|๋ณด๋„ˆ์Šค|[์˜ต์…˜]”์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด 3์„ธํŠธ. ์˜ˆ)  1S2D*3T ์ ์ˆ˜๋Š” 0์—์„œ 10...

[์นด์นด์˜ค] 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ1(๋น„๋ฐ€ ์ง€๋„) ํ’€์ด using Javascript

์ด๋ฏธ์ง€
์นด์นด์˜ค 2017๋…„ ํ•˜๋ฐ˜๊ธฐ ์‹ ์ž… ๊ณต์ฑ„ 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ 1๋ฒˆ ํ’€์ด. ๋ฌธ์ œ1. ๋น„๋ฐ€๋น„๋„(๋‚œ์ด๋„: ํ•˜) ๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ “๊ณต๋ฐฑ”(“ “) ๋˜๋Š” “๋ฒฝ”(“#”) ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ “์ง€๋„ 1”๊ณผ “์ง€๋„ 2”๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1 ๋˜๋Š” ์ง€๋„ 2 ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค. “์ง€๋„ 1”๊ณผ “์ง€๋„ 2”๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์˜ ๋น„์ƒ๊ธˆ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก, ๋น„๋ฐ€์ง€๋„์˜ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š” ์ž‘์—…์„ ๋„์™€์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์ž…๋ ฅ ํ˜•์‹ ์ž…๋ ฅ์œผ๋กœ ์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ  n  ๊ณผ 2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด  arr1 ,  arr2 ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค. 1 ≦  n  ≦ 16 arr1 ,  arr2 ๋Š” ๊ธธ์ด  n ์ธ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ  x ๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ์˜ ๊ธธ์ด๋Š”  n  ์ดํ•˜์ด๋‹ค. ์ฆ‰, 0 ≦  x  ≦ 2^n - 1์„ ๋งŒ์กฑํ•œ๋‹ค. ์ถœ๋ ฅ ํ˜•์‹ ์›๋ž˜์˜ ๋น„๋ฐ€์ง€๋„๋ฅผ ํ•ด๋…ํ•˜์—ฌ  "#" ,  ๊ณต๋ฐฑ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ถœ๋ ฅํ•˜๋ผ. ๋ณด๋‹ค ์ž์„ธํ•œ ๋ฌธ์ œ ์„ค๋ช…์€ ์•„๋ž˜ ์นด์นด์˜ค ๊ณต์‹ ๋ธ”๋กœ๊ทธ ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-...

[Javascript] ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ(Garbage Collector)

์ด๋ฏธ์ง€
๋ฉ”๋ชจ๋ฆฌ ์ƒ์กด ์ฃผ๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ทธ ์ข…๋ฅ˜์™€ ์ƒ๊ด€์—†์ด ๋น„์Šทํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์กด ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ํ•„์š”ํ•  ๋•Œ ํ• ๋‹นํ•œ๋‹ค. ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(์ฝ๊ธฐ, ์“ฐ๊ธฐ). ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋ถˆํ•„์š”ํ•ด์งˆ ๊ฒฝ์šฐ ํ•ด์ œํ•œ๋‹ค. ์œ„์˜ ์ˆœ์„œ์—์„œ 1, 2๋ฒˆ์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.  ํ•˜์ง€๋งŒ 3๋ฒˆ์˜ ๊ฒฝ์šฐ ์–ธ์–ด์— ๋”ฐ๋ผ ๊ทธ ์ •์˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.  ์ €๊ธ‰ ์–ธ์–ด ์—์„œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•˜์ง€๋งŒ, Javascript์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์–ธ์–ด๋Š” ๋ช…์‹œ์  ํ•ด์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ๋•Œ๋ฌธ์—  ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ(Garbage Collector) ์˜ ๋„์›€์„ ๋ฐ›๋Š”๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์กด ์ฃผ๊ธฐ๋ฅผ ํ•œ ๋‹จ๊ณ„์”ฉ ์‚ดํŽด๋ณด์ž. ์ถœ์ฒ˜: Valtteri Mรคki 1. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ฐ’ ์ดˆ๊ธฐํ™” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค. const n = 123; //์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น const s = 'string'; //๋ฌธ์ž์—ด ๋ณ€์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น const o = { a: 'abc', b: 123 }; //๊ฐ์ฒด ๋ฐ ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น const a = [1, 2, 3]; //๋ฐฐ์—ด ๋ฐ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น const u; //javascript์—์„œ๋Š” ์ดˆ๊ธฐ๊ฐ’์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ undefined๋กœ ๊ฐ’์„ ๋ฐฐ์ •ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•œ ํ• ๋‹น ํ•จ์ˆ˜๋ฅผ call ํ•˜๋Š” ์ˆœ๊ฐ„์—๋„ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚œ๋‹ค. const d = new Date(); // Date ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น const e = document.createElement('div'); // DOM ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น 2. ๋ฉ”๋ชจ๋ฆฌ(๊ฐ’) ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด๋ž€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ธฐ/์“ฐ๊ธฐ ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.  ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ๊ฐ’์„ ์ฝ๊ณ  ์“ธ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ์ธ์ˆ˜๋ฅผ ๋„˜๊ธธ ๋•Œ๋„ ์ผ์–ด๋‚œ๋‹ค. 3. ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ์•ž์˜ ๊ณผ์ •์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ํ†ต์ œ...

[Hackerrank] Breaking the Records ๋ฌธ์ œ ํ•ด์„ค - Algorithms > Implementation / Easy

์ด๋ฏธ์ง€
Breaking the Records 1. ๋ฌธ์ œ ์„ค๋ช… ์ด ๋ฌธ์ œ๋Š” ๊ต๋‚ด ๋†๊ตฌ ์„ ์ˆ˜์ธ Maria์˜ ์‹œ์ฆŒ ์„ฑ์ ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํ•œ ์‹œ์ฆŒ์—์„œ n๋ฒˆ ๊ฒฝ๊ธฐ๋ฅผ ์น˜๋ฃจ๋Š” ๋™์•ˆ ๊ฐ๊ฐ์˜ ์ ์ˆ˜๋ฅผ s๋ฐฐ์—ด์— ํ‘œ๊ธฐํ•œ๋‹ค(s[0], s[1], ..., [sn-1]). ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํ•œ ๊ฒฝ๊ธฐ์—์„œ ๊ธฐ๋กํ•œ ์ตœ๊ณ  ์ ์ˆ˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ ํšŸ์ˆ˜ ํ•œ ๊ฒฝ๊ธฐ์—์„œ ๊ธฐ๋กํ•œ ์ตœ์ € ์ ์ˆ˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ ํšŸ์ˆ˜ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ ์‹œ์ฆŒ ๊ฒฝ๊ธฐ๋ฅผ ์น˜๋ค˜์„ ๊ฒฝ์šฐ,  Maria์˜ ํ•œ ์‹œ์ฆŒ ์„ฑ์  ์ตœ๊ณ  ์ ์ˆ˜๋Š” 10 -> 20 -> 25๋กœ ์ด 2๋ฒˆ ์—…๋ฐ์ดํŠธ ๋๋‹ค(10์ ์€ ์ดˆ๊ธฐ๊ฐ’). ๊ทธ๋ฆฌ๊ณ  ์ตœ์ € ์ ์ˆ˜๋Š” 10 -> 5 -> 4 -> 2 -> 1๋กœ ์ด 4๋ฒˆ ์—…๋ฐ์ดํŠธ ๋๋‹ค(10์€ ์ดˆ๊ธฐ๊ฐ’). *์›๋ณธ ๋งํฌ:  https://www.hackerrank.com/challenges/breaking-best-and-worst-records/problem 2. Input Format ์ฒซ๋ฒˆ์งธ ์ค„์—๋Š” ํ•œ ์‹œ์ฆŒ์— ์น˜๋ค„์ง„ ๊ฒฝ๊ธฐ ์ˆ˜(n)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ถ€์ „์งธ ์ค„์—๋Š” Maria๊ฐ€ ๊ฐ ๊ฒฝ๊ธฐ์—์„œ ๊ธฐ๋กํ•œ ์ ์ˆ˜(s)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 3. Output Format ์ตœ๊ณ  ์ ์ˆ˜์™€ ์ตœ์ € ์ ์ˆ˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์ถœ๋ ฅํ•œ๋‹ค. Sample Input 1 9 10 5 20 20 4 5 2 25 1 Sample Output 1 2 4 Sample Input2 10 3 4 21 36 10 28 35 5 24 42 Sample Output2 4 0 Solution ์ด ๋ฌธ์ œ๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ดˆ๊ธฐ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์„ ์‹œ์ฆŒ ์ฒซ๋ฒˆ์งธ ๊ฒฝ๊ธฐ์˜ ์ ์ˆ˜๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ฒฝ๊ธฐ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค. ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ํ˜„์žฌ ์ตœ๊ณ ์ ๋ณด๋‹ค ๋” ๋†’์€ ์ ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด increase๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ตœ๊ณ ์  ์นด์šดํŠธ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 3๋ฒˆ๊ณผ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ํ˜„์žฌ ์ตœ์ €์ ๋ณด๋‹ค ๋” ๋‚ฎ์€ ์ ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด decrease๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ตœ์ €์  ์นด์šดํŠธ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์ตœ์ข… ์ฝ”๋“œ๋Š” ...

[ES6] const, let์„ ํ†ตํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ

๊ฐœ์ธ์ ์œผ๋กœ const , let ์„ ํ†ตํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ์€ ECMAScript2015๊ฐ€ ๋ฐœํ‘œ๋˜๋ฉด์„œ Javascript์— ๊ฐ€์ ธ์˜จ ํฐ ๋ณ€ํ™” ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋‹ค. ๊ธฐ์กด Javascript์—์„œ๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ var ๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•ด์•ผ ํ–ˆ๋‹ค. ์ด๋“ค ์‚ฌ์ด์—๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. 1. ํ˜ธ์ด์ŠคํŒ…(hoisting)  const ์™€ let ์€ ํ˜ธ์ด์ŠคํŒ… ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. console.log(var1); //undefined var var1 = 'var'; console.log(var2); //Uncaught ReferenceError: var2 is not defined let var2 = 'let'; console.log(var3); //Uncaught ReferenceError: var3 is not defined const var3 = 'const'; var ์˜ ๊ฒฝ์šฐ ์„ ์–ธํ•˜๊ธฐ ์ „์— ํ˜ธ์ถœํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ const ๋˜๋Š” let ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 2. scope 2.1 var - function scope ๊ธฐ์กด์— ์‚ฌ์šฉ๋˜์—ˆ๋˜ var๋Š” function scope๋ฅผ ๊ฐ€์ง„๋‹ค. function scope๋ž€, ํ•œ ๋ฒˆ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‹จ์œ„ ๋‚ด์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋”์šฑ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค. for(var i = 0; i < 10; i++){ console.log('i is ', i); } console.log('after for i is ', i); //after for i is 10 function func(){ for(var j = 0; j < 10; j++){ console.log('j is ', j); } } func(); console.log('after for ...