๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 159

Type Inference (ํ˜•์‹ ์ถ”๋ก )

Type Inference 1. Type Inference (ํ˜•์‹ ์ถ”๋ก ) - ์ƒ์ˆ˜ ํ˜น์€ ๋ณ€์ˆ˜์— ์ž๋ฃŒํ˜•์„ ๋”ฐ๋กœ ๋ช…์‹œํ•ด ์ฃผ์ง€ ์•Š๊ณ , ๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ Compiler๊ฐ€ ํ˜•์‹(์ž๋ฃŒํ˜•)์„ ์ถ”๋ก ํ•˜์—ฌ Default ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒฐ์ •ํ•จ let num = 1 // Int.Type let num2 = 1.0 // Double.Type let str = "Swift" // String.Type let isValid = true // Bool.Type let isValid = false // Bool.Type - ๋‹จ, ์ž๋ฃŒํ˜•์„ ์ง์ ‘ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š๊ณ , ์ดˆ๊ธฐ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” Compiler๊ฐ€ ํ˜•์‹(์ž๋ฃŒํ˜•) ์ถ”๋ก ์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ž๋ฃŒํ˜•์„ ์ƒ๋žต ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹น ํ•ด์•ผ ํ•จ 2. Type..

Data Type With Memory

Data Type With Memory 1. Data Type - Data Type, ์ž๋ฃŒํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•จ - Int ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ PC๊ฐ€ 32bits ์šด์˜์ฒด์ œ๋ผ๋ฉด 4Byte, 64bits ์šด์˜์ฒด์ œ๋ผ๋ฉด 8Byte๋งŒํผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ - ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ ์•Œ๋งž์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ์˜ ์ž๋ฃŒํ˜•์ด ์กด์žฌ 2. Swift ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(Swift Built-in Data Type) - Integer - Floating-Point - Boolean - Character - String 3. Data ์ €์žฅ ๋‹จ์œ„ - ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” 1๊ณผ 0์„ ์ €์žฅํ•˜๋Š” ๋ฐ˜๋„์ฒด - ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„ : Bit ~ YB... ..

Scope

Scope 1. Global Scope(์ „์—ญ ๋ฒ”์œ„) - "{}"์— ์†ํ•˜์ง€ ์•Š๊ณ , ๋ชจ๋“  Scope์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ Scope 2. Local Scope(์ง€์—ญ ๋ฒ”์œ„) - "{}"๋‚ด์— ์†ํ•˜๋Š” Scope์ด๋ฉฐ, ํ•ด๋‹น ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•จ 3. Scope ํŠน์ง• - ๊ฐ™์€ Scope ๋‚ด์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜/์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋กœ ๋‹ค๋ฅธ Scope์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜/์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์Œ - Local Scope์—์„œ๋Š” ์ƒ์œ„ Scope์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ. ๊ฐ€๋ น, ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ „์—ญ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ - ์ƒ์œ„ Scope์—์„œ๋Š” ํ•˜์œ„ Scope์— ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ

Variables and Constants

Variables and Constants 1. Variables Syntax var variableName = initialValue // var variableName: Type = initialValue - ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ , ๋•Œ์— ๋”ฐ๋ผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ - ๊ฐ ๋ณ€์ˆ˜์—๋Š” ์„ ์–ธ๋œ ์ž๋ฃŒํ˜•์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ(๊ฐ€๋ น, ์ •์ˆ˜ ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ์ˆ˜๋Š” ์—†์Œ) 2. Constants Syntax let constantName = initialValue // let constantName: Type = initialValue - ํ•œ ๋ฒˆ ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด, ์ดํ›„์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ๊ณต๊ฐ„ - ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์ˆ˜๋„ ์„ ์–ธํ•œ ์ž๋ฃŒํ˜•๊ณผ ์ผ..

Swift Source Code Build

๋Œ€๋žต์ ์ธ Swift Source Code Build ๊ณผ์ • HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ์œ„ ๊ณผ์ •์„ ์ „์ฒด์ ์œผ๋กœ ๋ฌถ์–ด์„œ Build ๋ผ๊ณ  ํ•จ ์œ„ ๊ณผ์ •์—์„œ Link๊นŒ์ง€์˜ ๊ณผ์ •์„ Compile Time์ด๋ผ๊ณ  ๋ถ€๋ฆ„ Run(์‹คํ–‰ ํŒŒ์ผ) ์ดํ›„์— Debug Mode์™€ Release Mode๋กœ ๋‚˜๋‰จ Debug Mode๋Š” Application์„ ๊ฐœ๋ฐœ ํ•  ๋•Œ๋ฅผ ๋งํ•˜๋ฉฐ, Release Mode๋Š” App Store์— ๋ฐฐํฌํ•  ๋•Œ๋ฅผ ๋งํ•จ ์œ„ ๊ณผ์ •์—์„œ Run ์ดํ›„ ๊ณผ์ •์„ Run Time์ด๋ผ๊ณ  ๋ถ€๋ฆ„

Swift Data Structure And Algorithm ์ •๋ฆฌ

https://github.com/YoungJaeLee-github/Swift-DataStructure-And-Algorithm GitHub - YoungJaeLee-github/Swift-DataStructure-And-Algorithm: Swift Algorithm Study Swift Algorithm Study. Contribute to YoungJaeLee-github/Swift-DataStructure-And-Algorithm development by creating an account on GitHub. github.com ์‹ ์ž… iOS Engineer๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ณผ์ • ์ค‘ Coding Interview๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ Swift Language ๊ด€์ ์—์„œ Data Structure์™€ Algorit..

ํšŒ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ d๊ฐ€ 1์ธ ๊ฒฝ์šฐ, ์ •๋ฐฉํ–ฅ d๊ฐ€ 2์ธ ๊ฒฝ์šฐ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์—ด์˜ ์›์†Œ์— ๋Œ€ํ•ด ์œ„์น˜(index)๋ฅผ ํšŒ์ „ํ•ด์•ผ ํ•จ ์—ฌ๊ธฐ์„œ x์˜ ์œ„์น˜๋ฅผ 0๋ฒˆ ์ธ๋ฑ์Šค์—์„œ ์‹œ์ž‘ํ•ด์„œ ๊ณ„์†ํ•ด์„œ ํšŒ์ „ํ•œ ๊ฒฐ๊ณผ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ ๋‹ค์Œ ํšŒ์ „์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, x์˜ ์œ„์น˜๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•˜๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•จ ๋˜, y์˜ ์ž…๋ ฅ ๋ฒ”์œ„๊ฐ€ 100์ดํ•˜ ์ด๋ฏ€๋กœ n์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค์‹œ y์— ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ˜๋ณต๋˜๋Š” ์ฃผ๊ธฐ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ์Œ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ •๋ฐฉํ–ฅ์˜ ๊ฒฝ์šฐ์—๋Š” x + y๊ฐ€ n๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ ์˜ค๋ฅธ์ชฝ ๋์„ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋˜๋ฏ€๋กœ n์„ ๋‹ค์‹œ ๋นผ์ฃผ๊ณ , ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ๊ทธ ๋งŒํผ ํšŒ์ „ํ•˜๋ฉด ๋˜๊ณ , ์—ญ๋ฐฉํ–ฅ์˜ ๊ฒฝ์šฐ์—๋Š” x - y ๊ฐ€ 0๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ์™ผ์ชฝ ๋์„ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋˜๋ฏ€๋กœ n์„ ๋”..

ํญ๋ฐœ๋ฌผ ์„ค์น˜

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ SCC ๋ฌธ์ œ๋ฅผ ์‘์šฉํ•œ ๋ฌธ์ œ๋กœ, ์ฝ”์‚ฌ๋ผ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ DFS๋ฅผ ํ•œ๋ฒˆ ๋” ์ ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•ด์•ผ ํ•จ ๊ฒฐ๋ก ์ ์œผ๋กœ, SCC์ธ ๊ทธ๋ž˜ํ”„๋“ค์€ ์–ด๋– ํ•œ ์ •์ ์„ ํ„ฐ๋œจ๋ ค๋„ ๋‹ค ํ„ฐ์ง€๊ธฐ ๋•Œ๋ฌธ์— 1๊ฐœ์˜ ์ •์ ์œผ๋กœ ๋ด๋„ ๋ฌด๋ฐฉํ•จ ๋”ฐ๋ผ์„œ SCC์ธ ๊ทธ๋ž˜ํ”„๋“ค์„ 1๊ฐœ์˜ ์ •์ ์œผ๋กœ ๋ณด๊ณ , ๋‚˜๋จธ์ง€์— ๋Œ€ํ•ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๊ฒŒ ํญ๋ฐœ๋ฌผ์„ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๋‚˜์—๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์ด ์—†๋Š” ์ •์ ์— ๋Œ€ํ•ด ํ„ฐ๋œจ๋ฆฌ๊ฒŒ ๋˜๋ฉด ๊ฐ€์žฅ ์ตœ์†Œํ•œ์˜ ๋‹ค์ด๋„ˆ๋งˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํญ๋ฐœ๋ฌผ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Œ ์ด๋ฅผ ์ฝ”์‚ฌ๋ผ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‘์šฉํ•˜์—ฌ ๋น ์ ธ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์žฌ๊ท€ํ•จ์ˆ˜(DFS)์˜ ํŠน์„ฑ์ƒ ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋น ์ ธ๋‚˜์˜จ ์ •์ ์ด ๋‚˜์—๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์ด ์—†๋Š” ๊ฐ„์„ ์ด๋ฏ€๋กœ, ์ด๋ฒˆ์—๋Š” ์—ญ๋ฐฉํ–ฅ์ด ์•„๋‹Œ ์›..

SCC

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ™์€ ๊ทธ๋ฃน์˜ ์ •์ ์ด๋ผ๋ฉด ์„œ๋กœ ์˜ค๊ณ ๊ฐˆ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ฃน๋ผ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ SCC(Strongly Connected Component)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ฝ”์‚ฌ๋ผ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„๋ฅผ ์ •๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์™€ ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋‘๊ฐ€์ง€๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ์ •๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด DFS๋ฅผ ์ ์šฉํ•˜์—ฌ ๋น ์ ธ๋‚˜์˜ค๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ทธ ์ •์ ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋น ์ ธ๋‚˜์˜จ ์ •์ ์ด ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋‹จ๋ง๋…ธ๋“œ๊ฐ€ ๋˜๋ฏ€๋กœ, ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋น ์ ธ๋‚˜์˜จ ์ •์ ๋ถ€ํ„ฐ ๋‹ค์‹œ DFS๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด SCC๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ ๋”ฐ๋ผ์„œ O(V + E)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK..

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

1. ๋ฌธ์ œ ํŠน์ • ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ, 2๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ์ˆ˜๊นŒ์ง€ ๋ฒ”์œ„ ๋‚ด์˜ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ 1์ธ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ๋ฐฐ์—ด์— 1๋ฒˆ์งธ ์›์†Œ์—๋Š” 0์„ ์ €์žฅํ•˜๊ณ  2๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ์ˆ˜๊นŒ์ง€ ๊ฐ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๊ทธ์— ๋Œ€์‘ํ•˜๋Š” ์œ„์น˜์— ์›์†Œ๋ฅผ ์ €์žฅํ•จ ๊ฐ€์žฅ ์ž‘์€ ์†Œ์ˆ˜์ธ 2๋ถ€ํ„ฐ ๊ทธ์˜ ๋ฐฐ์ˆ˜๋“ค์„ ๋ฐฐ์—ด์—์„œ ๋ชจ๋‘ 0์œผ๋กœ ์ง€์›Œ๋‚˜๊ฐ€๋ฉด ์†Œ์ˆ˜๋งŒ ๋‚จ๊ฒŒ๋จ ๋”ฐ๋ผ์„œ, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ N์ด๋ผ๋ฉด O(N log N)์— ํŠน์ • ๋ฒ”์œ„๋‚ด์˜ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ ํŠน์ • ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์ œ์—์„œ๋Š” ์ œ๊ณฑ๊ทผ ๊นŒ์ง€ ๋‚˜๋ˆ„์–ด๋ณด๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ณ , ํŠน์ • ๋ฒ”์œ„ ๋‚ด์˜ ๋ชจ๋“  ์†Œ์ˆ˜๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž„ 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด //MA..