TIL : CPU, ์ด์ง„ํƒ์ƒ‰, ์žฌ๊ท€ํ•จ์ˆ˜
728x90

Today, What I learned?

์ฐฝ๋ฏผ ํŠœํ„ฐ๋‹˜์˜ CSํŠน๊ฐ•๊ณผ ๊ณ„์†๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ์˜ ์ „์Ÿ.. ๐Ÿ”ฅ

์˜ค๋Š˜์€ CS ํŠน๊ฐ•์—์„œ ๋“ค์€ CPU์™€ ์ด์ง„ ํƒ์ƒ‰, ์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค!

ํŠน๊ฐ• ๊ด€๋ จํ•ด์„œ๋งŒ ์ •๋ฆฌํ•ด๋„ ์–‘์ด ๊ฝค ๋งŽ๊ธด ํ•˜์ง€๋งŒ.. ์ •๋ฆฌ ์‹œ์ž‘! ๐Ÿ‘

 

CPU

ํ”ํžˆ๋“ค ์ปดํ“จํ„ฐ ๊ฒฌ์ ์„ ๋”ฐ์งˆ ๋•Œ ๋งŽ์ด ๋ณด๋Š” ๊ฒƒ๋“ค ์ค‘์— ํ•˜๋‚˜๋กœ ์ต์ˆ™ํ•  ์ˆ˜ ์žˆ๋‹ค!..

Central Processing Unit์˜ ์•ฝ์ž๋กœ ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜๋ฅผ ๋งํ•œ๋‹ค. CPU๋Š” ์ปดํ“จํ„ฐ์˜ ๋‘๋‡Œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ์ œ์–ดํ•˜๋ฉฐ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ฒ˜๋ฆฌ์žฅ์น˜์™€ ์ œ์–ด์žฅ์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , CPU์—๋Š” ์บ์‹œ ๊ฐ™์€ ๋ถ€๊ฐ€ ์žฅ์น˜๋„ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

 

 

์™œ CPU๋Š” ์‹ฑ๊ธ€ ์ฝ”์–ด์—์„œ ๋ฉ€ํ‹ฐ ์ฝ”์–ด๊ฐ€ ๋˜์—ˆ๋Š”๊ฐ€?

๊ฒฐ๋ก ์ ์œผ๋กœ ์‹ฑ๊ธ€์ฝ”์–ด๋งŒ์œผ๋กœ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ํผํฌ๋จผ์Šค์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์ฝ”์–ด๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.

์ฝ”์–ด์˜ ๊ฐœ์ˆ˜๋งˆ๋‹ค ๊ฐ€์žฅ ๋น ๋ฅธ ์ฒ˜๋ฆฌ์†๋„๋ฅผ ์ž๋ž‘ํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ์„ธํŠธ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋”์šฑ ๋†’์•„์ง„๋‹ค.

์‹ฑ๊ธ€์ฝ”์–ด์˜ ๋ณธ์งˆ์ ์ธ ํ•œ๊ณ„๋ฅผ ๋ฉ€ํ‹ฐ์ฝ”์–ด๋Š” ์—ด ์†์‹ค ๊ฐ์†Œ, ๋น ๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰์œผ๋กœ ๊ทน๋ณตํ•œ๋‹ค.

 

CPU์˜ ๊ตฌ์„ฑ

์‚ฐ์ˆ ๋…ผ๋ฆฌ์—ฐ์‚ฐ์žฅ์น˜(ALU)

  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์žฅ์น˜, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์žฅ์น˜ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์žฅ์น˜๋Š” ๋ง์…ˆ, ๋บ„์…ˆ ๊ฐ™์€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.
  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์žฅ์น˜๋Š” ๋…ผ๋ฆฌํ•ฉ, ๋…ผ๋ฆฌ๊ณฑ ๊ฐ™์€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

 

์ œ์–ด์žฅ์น˜(CU)

  • ๋ชจ๋“  ์žฅ์น˜๋“ค์˜ ์ข…์ž‘์„ ์ง€์‹œํ•˜๊ณ  ์ œ์–ดํ•œ๋‹ค.
  • ๋ช…๋ น ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ์ฝ์–ด ๋“ค์ธ ๋ช…๋ น์–ด๋ฅผ ํ•ด๋…ํ•ด์„œ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ์ •ํ™•ํ•œ ์ˆ˜ํ–‰์„ ํ•˜๋„๋ก ํ•œ๋‹ค.

 

๋ ˆ์ง€์Šคํ„ฐ

๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ(general purpose register)

  • ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • EAX(์‚ฐ์ˆ  ์—ฐ์‚ฐ), EBX(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ €์žฅ), ECX(๋ฐ˜๋ณต ๋ช…๋ น์–ด(for, while๋ฌธ ๊ฐ™์€) ์ˆ˜ํ–‰) ๋“ฑ ์ด 8๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • ์†Œ๊ทœ๋ชจ์˜ ์ผ์‹œ์ ์ธ ๊ธฐ์–ต ์žฅ์น˜๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„ ๋‚ด์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋‚˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๊ธฐ์–ตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํŠน์ˆ˜ ๋ ˆ์ง€์Šคํ„ฐ (special purpose register)

ํŠน์ˆ˜ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ด๋ฆ„์ฒ˜๋Ÿผ ํŠน์ˆ˜ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

1) ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC)
    • ๋‹ค์Œ์— ์ˆ˜ํ–‰๋  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ํ˜„์žฌ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ถœํ•œ ํ›„์—๋Š” ์ž๋™์ ์œผ๋กœ 1์„ ์ฆ๊ฐ€ํ•œ๋‹ค. (์นด์šดํ„ฐ์ธ ์ด์œ !)
  • ์ด ์™ธ์—๋„ ๊ธฐ์–ต ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ์ž„์‹œ ์ €์žฅํ•˜๋Š” MAR, SP(์Šคํƒ ํฌ์ธํ„ฐ) ๋“ฑ์ด ์žˆ๋‹ค.

 

2) ๋ช…๋ น์–ด ๋ ˆ์ง€์Šคํ„ฐ

๊ฐ€์žฅ ์ตœ๊ทผ์— ์ธ์ถœ๋œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋‹ค.

 

3) ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ

  • ๊ธฐ์–ต์žฅ์น˜ ๋ฒ„ํผ ๋ ˆ์ง€์Šคํ„ฐ(MBR)
    • ๊ธฐ์–ต์žฅ์น˜์— ์“ฐ์ผ ๋ฐ์ดํ„ฐ๋‚˜ ์ฝํž ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ์–ต์žฅ์น˜
  • ๋ˆ„์‚ฐ๊ธฐ(AC)
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ

 

CPU ๋ช…๋ น์–ด ์‚ฌ์ดํด

  1. ๋ช…๋ น์–ด ์ธ์ถœ (fetch cycle) : ๋ช…๋ น์–ด ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ ์ฃผ์†Œ์—์„œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋‹จ๊ณ„
  2. ๋ช…๋ น์–ด ํ•ด๋… (decode) : CU์˜ ๋””์ฝ”๋”ฉ์„ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
  3. ๋ฐ์ดํ„ฐ ์ธ์ถœ (data fetch) : Operand๊ฐ€ ์—ฐ์‚ฐ์ž์˜ ๋Œ€์ƒ์˜ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  4. ๋ช…๋ น์–ด ์‹คํ–‰ (execute) : ๋ช…๋ น์–ด๋ฅผ ALU๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•œ๋‹ค.
  5. ์ €์žฅ : ์ˆ˜ํ–‰๋œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ๋ ˆ์ง€์Šคํ„ฐ๋‚˜ ๊ธฐ์–ต ์žฅ์น˜์— ์“ฐ์ธ๋‹ค.

 

์บ์‹œ

  • CPU์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„๋†“๋Š” ์ €์žฅ๊ณต๊ฐ„์ด๋‹ค.
  • ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฃผ๊ธฐ์–ต์žฅ์น˜์ธ ๋””์Šคํฌ์˜ ์ˆ˜ํ–‰ ์†๋„ ๊ฐœ์„ ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜!

 

 

CPU์™€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ๊ณผ์ •

CPU๋Š” ๊ธฐ๊ณ„์–ด๋ฐ–์— ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๊ธฐ๊ณ„์–ด๋Š” 0,1๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ์ด ์•Œ์•„๋ณด๊ธฐ ๋‹น์—ฐํžˆ ์–ด๋ ต๋‹ค!..
์ด๋Ÿฐ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ๋žŒ์ด ์ข€ ๋” ์‰ฝ๊ฒŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ์–ด์…ˆ๋ธ”๋ฆฌ์–ด.

์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋Š” ์ปดํ“จํ„ฐ์™€ ์ผ๋Œ€์ผ๋กœ ๋Œ€์‘์ด ๋˜์–ด ๋น ๋ฅธ ์ˆ˜ํ–‰ ์†๋„๋ฅผ ์ž๋ž‘ํ•˜์ง€๋งŒ, ๊ทธ๋งŒํผ ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค๋‹ค๋Š” ์ ...

๊ทธ๋ž˜์„œ ๊ธฐ๊ณ„ ์ค‘์‹ฌ์˜ ์–ธ์–ด์ธ ์ €๊ธ‰ ์–ธ์–ด(Low-level Language)์™€ ๋ฐ˜๋Œ€๋˜๋Š” ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์–ธ์–ด, ๊ณ ๊ธ‰ ์–ธ์–ด(High-Level Language)๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.
LISP, BASIC, C, Java ๋“ฑ๋“ฑ!..

์ด๋Ÿฐ ๊ณ ๊ธ‰ ์–ธ์–ด๋“ค์€ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์‹คํ–‰๋œ๋‹ค.

 

 

 

์ด์ง„ ํƒ์ƒ‰

์ด์ง„ ํƒ์ƒ‰์€ ํƒ์ƒ‰ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜! ํŠน์ •ํ•œ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ผ์ •ํ•œ ๊ทœ์น™์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋งŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

์ด์ง„ ํƒ์ƒ‰์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋Š”๊ฐ€??

์ค‘๊ฐ„์— ์žˆ๋Š” ์ž„์˜์˜ ๊ฐ’์„ ์„ ํƒํ•ด์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•œ๋‹ค.
๋งŒ์•ฝ ์ด ์ค‘๊ฐ„๊ฐ’์ด ์ฐพ๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ, ๋” ํฌ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์„ ๋Œ€์ƒ์œผ๋กœ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๊ณ  ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•œ ์ด์ง„ํƒ์ƒ‰

const finding_target = 14;
const finding_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];

function solution(target, array) {
  let currentMin = 0;
  let currentMax = array.length - 1;
  let currentGuess = Math.floor((currentMin + currentMax) / 2);

  while (currentMin <= currentMax) {
    if (array[currentGuess] === target) {
      return true;
    } else if (array[currentGuess] < target) {
      currentMin = currentGuess + 1;
    } else {
      currentMax = currentGuess - 1;
    }

    currentGuess = Math.floor((currentMin + currentMax) / 2);
  }

  return false;
}

์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’, ์ค‘๊ฐ„๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
์ตœ์†Ÿ๊ฐ’์ด ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ์ปค์ง€์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ํƒ€๊นƒ ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณต!..

๋งŒ์•ฝ ์ค‘๊ฐ„๊ฐ’์ด ํƒ€๊นƒ ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ตœ์†Ÿ๊ฐ’์„ 1 ์ถ”๊ฐ€ํ•˜์—ฌ ์ค‘๊ฐ„๊ฐ’์„ ๋‹ค์‹œ ํƒ์ƒ‰ํ•œ๋‹ค.
๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” ์ตœ๋Œ“๊ฐ’์„ 1 ๊ฐ์†Œ.

 

 

 

์žฌ๊ท€ ํ•จ์ˆ˜

์ž๊ธฐ ์ž์‹ ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ ๋ถ€๋ฅด๋Š” ํ•จ์ˆ˜๋‹ค.
๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋ฐ˜๋“œ์‹œ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์ง€์ ์ธ ํ„ฐ๋ฏธ๋„ ์ปจ๋””์…˜์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ์„œ ์—๋Ÿฌ ๋ฐœ์ƒ!..

๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋Š” ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค๊ฑฐ๋‚˜.. ๊ฐ™์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•œ ์žฌ๊ท€ ํ•จ์ˆ˜

function palindrome(string) {
  if (string.length <= 1) {
    // ํ„ฐ๋ฏธ๋„ ์ปจ๋””์…˜
    return true;
  } else if (string[0] !== string[string.length - 1]) {
    return false;
  }

  return palindrome(string.slice(1, string.length - 1));
}

์œ ๋ช…ํ•œ ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ฌธ์ œ๋ฅผ ์žฌ๊ท€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค.
ํŒฐ๋ฆฐ๋“œ๋กฌ์€ '์˜ค๋””์˜ค', '์šฐ์˜์šฐ', '์†Œ์ฃผ๋งŒ๋ณ‘๋งŒ์ฃผ์†Œ' ์™€๊ฐ™์ด ๊ฐ๊ฐ ์ฒซ ๊ธ€์ž, ๋ ๊ธ€์ž๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
slice ๋ฉ”์„œ๋“œ๋กœ ๊ธ€์ž ๊ธธ์ด๋ฅผ ์กฐ์ •ํ•ด์„œ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค.

 

์žฌ๊ท€ ํ•จ์ˆ˜์—” ๋ฐ˜๋“œ์‹œ ํ„ฐ๋ฏธ๋„ ์ปจ๋””์…˜์ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—!..
๊ฐ€์šด๋ฐ ๊ธ€์ž๋งŒ ๋‚จ๋Š” ๊ฒฝ์šฐ์—๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ๊ณ , ๋งŒ์•ฝ ๊ธ€์ž๋“ค์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ๋‹ค.

 

 

 

 

 

์˜ค๋Š˜ TIL ์œ ๋…..๊ธธ๋‹ค.. 

์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ •์‹ ์—†๋˜ ํ‰์ผ ๋งˆ๋ฌด๋ฆฌ~~ ๐Ÿ˜‡
์ฃผ๋ง ๋™์•ˆ์—” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋„ ๋” ํ•˜๊ณ , ๋๋ง์ž‡๊ธฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ.. ๋ฐ˜๋“œ์‹œ ๋๋‚ธ๋‹ค!! ๐Ÿ‘

 

 

 

728x90