Bibi's DevLog ๐Ÿค“๐ŸŽ

[Swift / Array] enumerated() - ๋ฐฐ์—ด์„ ์—ด๊ฑฐํ•˜๋Š” ์‹œํ€€์Šค ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿ“ฑ๐ŸŽ iOS/๐Ÿ Apple Developer Documentation

[Swift / Array] enumerated() - ๋ฐฐ์—ด์„ ์—ด๊ฑฐํ•˜๋Š” ์‹œํ€€์Šค ๋งŒ๋“ค๊ธฐ

๋น„๋น„ bibi 2022. 9. 23. 21:44

Apple Developer Documentation

enumerate ์—ด๊ฑฐํ•˜๋‹ค

(n, x)์Œ์˜ ์‹œํ€€์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • n์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์—ฐ์†์ ์ธ integer๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ,
  • x๋Š” ์‹œํ€€์Šค์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์„ ์–ธ

func enumerated() -> EnumeratedSequence<Self>

๋ฆฌํ„ด๊ฐ’

์‹œํ€€์Šค๋ฅผ ์—ด๊ฑฐํ•˜๋Š” ์Œ์˜ ์‹œํ€€์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„ : O(1)

์„ค๋ช…

์ด ์˜ˆ์‹œ๋Š” โ€œSwiftโ€ ๋ผ๋Š” ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋ฅผ ์—ด๊ฑฐํ•˜๊ณ , ๋ฌธ์ž์—ด ์†์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ๊ทธ ์ž๋ฆฌ์™€ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

for (n, c) in "Swift".enumerated() {
    print("\(n): '\(c)'")
}
// Prints "0: 'S'"
// Prints "1: 'w'"
// Prints "2: 'i'"
// Prints "3: 'f'"
// Prints "4: 't'"

์ปฌ๋ ‰์…˜์„ ์—ด๊ฑฐํ•  ๋•Œ, ๊ฐ ์Œ์˜ ์ •์ˆ˜๋ถ€๋Š” ์—ด๊ฑฐํ˜•์˜ counter์ด์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ ์Œ์„ ์ด๋ฃจ๋Š” ๊ฐ’์˜ ์ธ๋ฑ์Šค์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ counter๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , ์ •์ˆ˜๋กœ ์ธ๋ฑ์‹ฑ๋˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด Array๋‚˜ ContiguousArray๊ฐ™์€). ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ counter๋Š” out of range๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๋กœ ์“ฐ๋ ค ํ•  ๋•Œ ํƒ€์ž…์ด ๋ถ€์ ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋“ค๊ณผ ํ•จ๊ป˜ ์š”์†Œ๋“ค์„ ์ˆœํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, zip(_:_:) ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์•„๋ž˜ ์˜ˆ์‹œ๋Š” 5์ž ์ดํ•˜์˜ ์ด๋ฆ„์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด์„œ, Set์˜ ์š”์†Œ์™€ ์ธ๋ฑ์Šค๋“ค์„ ์ˆœํšŒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolรกs"]
var shorterIndices: [Set<String>.Index] = []
for (i, name) in zip(names.indices, names) {
    if name.count <= 5 {
        shorterIndices.append(i)
    }
}

์ด์ œ shorterIndices ๋ฐฐ์—ด์ด names Set์˜ ์งง์€ ์ด๋ฆ„์˜ ์ธ๋ฑ์Šค๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, set์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ์ธ๋ฑ์Šค๋“ค์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for i in shorterIndices {
    print(names[i])
}
// Prints "Sofia"
// Prints "Mateo"