2021.04.25 TIL ๐Ÿ”ผ

Jacksonยท2021๋…„ 4์›” 25์ผ
0

TIL(Today I Learned)

๋ชฉ๋ก ๋ณด๊ธฐ
27/42

๋„์ „ํ•˜๋Š” ๋‹น์‹  ์•„๋ฆ„๋‹ต๋‹ค!

์˜ค๋žซ๋งŒ์— ๋‹ค์‹œ ps๋ฅผ ํ’€์ž. ์ด๋ฒˆ์—๋Š” ๊ณจ๋“œ 5!! ๐Ÿ˜ˆ

์ด๋ถ„ํƒ์ƒ‰์— ์žˆ์–ด์„œ ์–ด๋Š์ •๋„๋Š” ์•ˆ๋‹ค๊ณ  ์ž๋งŒํ•œ ๋‚˜๋จธ์ง€, ๊ณจ๋“œ5๋ฅผ ํ’€์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€๋ฐ ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋ถ„๋ฅ˜๊ฐ€ ๋˜์–ด์žˆ์—ˆ๋‹ค. ํˆฌํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ฐธ์กฐ๋ธ”๋กœ๊ทธ์—์„œ ์ž˜ ๋‚˜์™€์žˆ๋‹ค.

์—ญ์‹œ๋‚˜ ์ด ํฌ๊ธฐํ•˜๋Š” ์Šต๊ด€์„ ๋ฒ„๋ฆฌ๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค.
์›๋ž˜๋Š” ํ•œ์‹œ๊ฐ„๋งŒ ํ•˜๊ณ  ์•ˆ๋˜๋ฉด ๊ณผ๊ฐํžˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ณผ๋žฌ๋Š”๋ฐ ์ด๋ฒˆ์—๋„ ๋‚ด๊ฐ€ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹น์—ฐํžˆ ๋งž๋Š”๊ฑฐ ๊ฐ™์•„์„œ ์™œ ํ‹€๋ ธ๋Š”์ง€ ์กฐ๊ธˆ๋งŒ ๋” ๋ณด์ž๊ณ  ํ•˜๋‹ค๊ฐ€ 2์‹œ๊ฐ„๊ฐ€๊นŒ์ด ๋ถ™์žก๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ๋•Œ๋Š” ํˆฌ ํฌ์ธํ„ฐ ๊ฐœ๋…๋„ ๋ชฐ๋ผ์„œ ์ด๋ถ„ํƒ์ƒ‰์„ while๋ฌธ์œผ๋กœ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ๊ฒฐ๊ตญ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ดค๋‹ค. ์š”์ฆ˜ ๋‚ด๊ฐ€ ์ด์›ƒํ•œ ํ˜„๋ฌด๋‹˜์ด ํ•ด๋‹ต๋ฒ•์„ ์ž˜ ์„ค๋ช…ํ•ด ์ฃผ์…จ๋‹ค.

ํˆฌ ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ž˜ ์•Œ์•˜๋‹ค๋ฉด ์ด๋ฒˆ ๊ณจ๋“œ ๋ฌธ์ œ๋Š” ํ˜ผ์ž์„œ ํ’€์—ˆ์„ ๊ฒƒ๋„ ๊ฐ™์ง€๋งŒ ๋‹ค์Œ๊ธฐํšŒ๋กœ ๋‚จ๊ฒจ๋‘๊ณ  ํ•™์Šตํ•˜๋Š” ๊ณผ์ •์ด ๋๋‹ค. mid๊ฐ’์„ ๋Œ€์‹ ํ•˜๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค.

๋จผ๊ฐ€ ์•„์‰ฌ์›Œ์„œ ๋‘ ํฌ์ธํ„ฐ๋ฅผ ๋” ๋ณด๋‹ค๋ณด๋‹ˆ ์ดˆ๋“ฑ๋ถ€/์ค‘๋“ฑ๋ถ€/๊ณ ๋“ฑ๋ถ€ ๋ณ„๋กœ ๊ฐ๊ฐ ๋‘ ํฌ์ธํ„ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ดˆ๋“ฑ๋ถ€ ๋ฌธ์ œ๋Š” ์•„์˜ˆ ๊ฐ™์•„์„œ ์ฝ”๋“œ ๋ณต๋ถ™์œผ๋กœ ํ’€์—ˆ๊ณ  ๊ณ ๋“ฑ๋ถ€๋Š” ์กฐ๊ธˆ ๋‹ฌ๋ž๋‹ค.

์„ธ ์šฉ์•ก
์ด ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ๋‚ด๊ฐ€ ๋งจ ์ฒ˜์Œ ์ด ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•˜๋ ค๋Š” ๋ฐฉ์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ๋ฐฉ์‹์ด ํ•˜๋‚˜๋ฅผ while๋ฌธ์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ•˜๋ ค๋Š”๊ฒƒ์ด์—ˆ๋Š”๋ฐ ๊ทธ๋Ÿฐ๋ฉด์—์„œ ์ด ๋ฌธ์ œ๋˜ํ•œ ์ฒซ๋ฒˆ์งธ ์šฉ์•ก๋งŒ ์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ์‹ถ์–ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์ •ํ›„ ์ œ์ถœํ•˜๋‹ˆ๊นŒ

๋”ฐ๋‹จ!

ํ•œ๋ฒˆ๋งŒ์— ๋ฌธ์ œ๋ฅผ ๋งž์ถ”์–ด์„œ ๋„ˆ๋ฌด ์ข‹์•˜๋‹ค. ํ•˜๋‚˜๋ฅผ ํŒŒ๋‹ˆ๊นŒ ์ด๋ ‡๊ฒŒ ์ ์šฉ์ด ๋ผ์„œ ๋‚˜๋ฆ„ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” ์ €๋ฒˆ์ฃผ์— ๋ชปํ’€์—ˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ’€์—ˆ๋‹ค. ๊ฒฐ๊ตญ์€ ์ธํ’‹๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋„ฃ์–ด์„œ ๋‚˜๋Š” runtime-error์˜€์ง€๋งŒ ๊ทธ๊ฑธ ๋ชป์ฐพ๊ณ  ํ•œ์ฐธ ๋ณด๋ฉด์„œ ์˜คํžˆ๋ ค lower/upper Bound์— ๊ฐœ๋…์„ ๊ณต๋ถ€ํ–ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋ฉด

var arr = [1,4,6,6,7,9] //์—์„œ
var key1 = 6
var key2 = 3
var ansIndex1 = -1 //ํ‚ค๊ฐ€ arr์— ๋“ค์–ด๊ฐˆ ์ธ๋ฑ์Šค ๊ฐ’
var ansIndex2 = -1
//์„ ๊ฐ๊ฐ ์ฐพ์„ ๋•Œ 
//lowerBound๋กœ ์ฐพ์„ ์‹œ 
ansIndex1 = 2
ansIndex2 = 1
//upperBound๋กœ ์ฐพ์„ ์‹œ
ansIndex1 = 4
ansIndex2 = 2

๋‚˜๋„ ์“ฐ๋ฉด์„œ ์ดํ•ด๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

MVVM ํด๋ฆฐ์•„ํ‚คํ…์ณ? ๐Ÿ˜ฑ

๋‚ด์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ ์•„์ง๋ชป๋ณด๊ณ  12์‹œ๊ฐ€ ๋‹ค๋˜์–ด์„œ ๋ณผ ๊ฒƒ ๊ฐ™๋‹ค ใ…œใ…œ
์ตœ์†Œํ•œ ์–ด๋Š์ •๋„ ์•Œ์•„์•ผ ํŒ€์›์—๊ฒŒ ํ”ผํ•ด๋ฅผ ๋ผ์น˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ ์ข€ ๋ณด๋‹ค๊ฐ€ ์ž์•ผ๊ฒ ๋‹ค.


๊ฒฐ๋ก 

  • ps๊ฐ€ ์žฌ๋ฐŒ๊ธดํ•œ๋ฐ ํ”„๋กœ์ ํŠธ๋„ ์ค‘์š”ํ•˜๋‹ˆ ์ด ๊ฐˆ๋ฆผ๊ธธ์„ ์ž˜ ์ •ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.
  • ์ƒ๊ฐ๋ณด๋‹ค ๋„ˆ๋ฌด๋งŽ์ด ์‰ฐ ๊ฒƒ๊ฐ™๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋‘˜ ๋‹ค ํ•  ์‹œ๊ฐ„์ด ๋˜๋Š”๊ฒƒ ๊ฐ™์€๋ฐ ๋Šฆ๊ฒŒ ์‹œ์ž‘ํ•ด์„œ ํ›„ํšŒํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•œ ๋ฒˆ ์•„ํ”ˆ๊ฒŒ ์ข€ ํฐ ๊ฒƒ ๊ฐ™๋‹ค. ์ฃผ๋ง ์•ฝ์†๋„ ๋‹ค ํฌ๊ธฐํ•˜๊ณ  ์˜คํ›„์ฏค ๋˜์–ด์„œ ๋ชธ์ด ๊ดœ์ฐฎ์•„์ง„ ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค. ์—ญ์‹œ ๊ฑด๊ฐ•์ด ์ตœ๊ณ ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€