[Swift ๋ฌธ๋ฒ•] 04. Swift ์ปฌ๋ ‰์…˜ ํƒ€์ž…์˜ Array (๋ฐฐ์—ด) ํƒ€์ž…์„ ๋ฐฐ์›Œ๋ณด์ž.

2021. 1. 7. 01:04ใ†๐Ÿง‘๐Ÿป‍๐Ÿ’ป iOS ๊ฐœ๋ฐœ/Swift

ํ•ด๋‹น ๊ธ€์€ ์•ผ๊ณฐ๋‹˜์˜ ์Šค์œ„ํ”„ํŠธ ๊ฐ•์˜์™€ ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Swift์˜ 7๊ฐ€์ง€ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ๋‹ค๋ค˜์—ˆ์ฃ ? ์ด๋ฒˆ์—๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…์˜ Array์— ๋Œ€ํ•ด์„œ ๊ฐ™์ด ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

Swift์—๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ํƒ€์ž…์—๋Š” Array (๋ฐฐ์—ด), Dictionary (๋”•์…”๋„ˆ๋ฆฌ), Set (์„ธํŠธ)๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

1. Array ์˜ ํŠน์ง• 

Swift์˜ ๋ฐฐ์—ด์€ ํ•„์š”์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๊ทธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์†Œ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์ž์œ ๋กญ์Šต๋‹ˆ๋‹ค. C์–ธ์–ด์˜ ๋ฐฐ์—ด ์ฒ˜๋Ÿผ ํ•œ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ๊ทธ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์ฃ . ๊ทธ๋Œ€์‹  C์–ธ์–ด ์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.  let ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด์ด ๋˜๊ณ  var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด  ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ•จ๊ป˜ Array ํƒ€์ž…์˜ ์„ ์–ธ๊ณผ ๊ฐ„๋‹จํ•œ ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


2. Array ํƒ€์ž…์˜ ์„ ์–ธ

var [๋ฐฐ์—ด ์ด๋ฆ„]: Array<ํƒ€์ž…> = Array<ํƒ€์ž…>() ์˜ ๊ธฐ๋ณธ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. Swift ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋™์ผํ‘œํ˜„์„ ํ—ˆ๋ฝํ•ฉ๋‹ˆ๋‹ค.

// Array ์„ ์–ธ

var numbers: Array<Int> = Array<Int>()

// ๋™์ผ ํ‘œํ˜„

// var numbers: Array<Int> = [Int]()
// var numbers: Array<Int> = []
// var numbers: [Int] = [Int]()
// var numbers: [Int] = Array<Int>()
// var numbers: [Int] = []
// var numbers = [Int]()

// ๋‹ค์–‘ํ•œ ํ‘œํ˜„์œผ๋กœ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


3. Array ํƒ€์ž…์˜ ํ”„๋กœํผํ‹ฐ

  • isEmpty : ๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์ธ์ง€ ์•„๋‹Œ์ง€ Bool ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • count : ๋ฐฐ์—ด์— ๋ช‡ ๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • first : ๋งจ ์ฒ˜์Œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

  • last : ๋งจ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
// Array Property 

var evenNums: Array<Int> = [2,4,4,6,8,10]

var oddNums: Array<Int> = []

print(evenNums.count) //6

print(oddNums.count)  //0

print(evenNums.isEmpty) //false

print(oddNums.isEmpty) //true

print(evenNums[3]) // 6 : ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ.

print("์ง์ˆ˜ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ: \(evenNums.first) , ๋งˆ์ง€๋ง‰ ์š”์†Œ: \(evenNums.last) ")

๋งˆ์ง€๋ง‰ ์ถœ๋ ฅ๋ฌธ์˜ Optional์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค!


4. Array ํƒ€์ž…์˜ ๋ฉ”์„œ๋“œ

  • insert( _: at: ) : ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • remove( _: ) : ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • append() : ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค, contentsOf ๋ ˆ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • removeFirst(): ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ ํ•ฉ๋‹ˆ๋‹ค.

  • removeLast(): ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • firstIndex(of: ): ํ•ด๋‹น ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ค‘๋ณต๋œ ์š”์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ๊ฒฌ๋œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 
// Array Method

var names: Array<String> = ["Sung-Ho","Kyeong-Tae","Sung-Kyu"]

names.insert("Jin-Han", at: 1)

for name in names {
    print(name)
}

names.append("Hyeon-Suk")

names.append(contentsOf: ["Ji-Rap","Sang-Hoon"])

names.insert("extramilejin", at: 0) 

print(names.count)

print(names.firstIndex(of: "Kyeong-Tae"))

names.remove(at: 5)

let lastName: String = names.removeLast()

let firstName: String = names.removeFirst()

print(firstName)

print(lastName)


5. ๋งˆ๋ฌด๋ฆฌ 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‚˜๋จธ์ง€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ธ Dictionary์™€ Set์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!