[λ°±μ€ 10987] λͺ¨μμ κ°μ (Swift)
[λ°±μ€ 10987] λͺ¨μμ κ°μ (Swift)
μ λ ₯ λ¬Έμμ΄μμ λͺ¨μ(a, e, i, o, u)μ κ°―μλ₯Ό μΈμ μΆλ ₯νλ λ¨μν λ¬Έμ μ΄λ€.
νμ΄λ₯Ό μ΄λ»κ² ν μ§ κ³ λ―Όνλ€κ° λ κ°μ§ λ°©λ²μ μκ°ν΄ 보μλ€.
- λ¬Έμμ΄μ λ¬Έμλ₯Ό λλ©° μ΄λ€ λ¬Έμκ° a, e, i, o, u μ€ νλλΌλ κ°μμ§ νμΈνκΈ° (
==
μ°μ°μ νμ©) - a, e, i, o, u λ₯Ό λ΄μ λͺ¨μ λ°°μ΄μ λ§λ€κ³ , λ¬Έμμ΄μ λ¬Έμλ₯Ό λλ©° μ΄λ€ λ¬Έμκ° λͺ¨μ λ°°μ΄μ ν¬ν¨λλμ§ νμΈνκΈ° (
contains(_:)
νμ©)
λ νμ΄λ₯Ό λͺ¨λ μμ±νκ³ λ λ€ λͺ¨λ μ νλ Έλ€.
κ°μΈμ μΌλ‘ μλ¬Έμ΄ μκ²Όλ λΆλΆμ λ νμ΄μ μ€νμκ°μ΄ μμ ν κ°μλ€λ κ²μ΄λ€.
λλ λΉμ°ν νμ΄1μ΄ λ λΉ λ₯Ό κ²μ΄λΌ μμνκ³ νμ΄1μ λ¨Όμ μλνκ³ , λ§μ κ±Έ νμΈν λ€ νμ΄2λ μλνλλ° μ€νμκ°μ΄ κ°μμ λλλ€.
κ·Έλμ λμ μ€νμκ°μ μμΈν νκ΅¬ν΄ λ³΄μλ€.
νμ΄ 1 (==
μ°μ°μ νμ©)
let input = readLine()!
var answer = 0
for char in input {
if char == "a" || char == "e" || char == "i" || char == "o" || char == "u" {
answer += 1
}
}
print(answer)
νμ΄1μμ λ¬Έμμ΄μ κΈΈμ΄κ° kλΌλ©΄, λΉκ΅ν΄μΌ ν λͺ¨μμ κ°μλ 5κ°μ΄κΈ° λλ¬Έμ μ΅μ μ κ²½μ° μ€νμκ°μ k*5κ° λλ€.
νμ§λ§ λ΄κ° νμ΄1μ΄ λ λΉ λ₯Ό κ±°λΌκ³ μμνλ μ΄μ λ contains(_:)
μ μκ°λ³΅μ‘λκ° O(n) μ΄κ³ , λ°λΌμ λΉμ°ν μ΄λ³΄λ€λ ==
μ°μ°μκ° λΉ λ₯Ό κ±°λΌκ³ μκ°νκΈ° λλ¬Έμ΄λ€.
νμ΄1μμλ ==
μ°μ°μ ||
λ‘ μ΄μ΄μ λ€μ― λ² μ¬μ©νκΈ΄ νμ§λ§, ||
μ°μ°μ νΉμ±μ 맨 μΌμͺ½λΆν° μνν΄ νλλΌλ trueμ΄λ©΄ μ 체 κ²°κ³Όλ trueμ΄λ―λ‘ λ μ΄μ λΉκ΅νμ§ μκΈ° λλ¬Έμ΄λ€. μ΄κ±Έ short-circuit evaluation λΌκ³ νλ€κ³ νλ€. (μ°Έκ³ : Swift 곡μ λ¬Έμ)
κ·Έλμ 쑰건문 (char == "a" || char == "e" || char == "i" || char == "o" || char == "u"
) μ λκΉμ§ νμΈν΄μΌνλ κ²½μ°λ§ μλλΌλ©΄, k*5보λ€λ λΉ λ₯Έ μ€νμκ°μ κ°μ§ κ²μ΄λΌ μμν μ μλ€.
νμ΄ 2 (contains(_:)
νμ©)
let input = readLine()!
let aeiou: [Character] = ["a", "e", "i", "o", "u"]
var answer = 0
for char in input {
if aeiou.contains(char) {
answer += 1
}
}
print(answer)
νμ΄2μμ μ¬μ©νλ contains(_:)
μ μκ°λ³΅μ‘λκ° O(n) μ΄λ€. μ΄λ nμ λ°°μ΄μ κΈΈμ΄μ΄λ©°, μ¬κΈ°μλ aeiou
μ κΈΈμ΄μΈ 5κ° λλ€.
λ¬Έμμ΄μ λ¬Έμλ₯Ό λλ©° containsλ₯Ό μ μ©νκΈ° λλ¬Έμ, λ¬Έμμ΄μ κΈΈμ΄κ° kμΌ λ μ€νμκ°μ k * 5μ΄λ€.
μ΄ λ λ΄κ° κ°κ³Όν κ²μ containsμ λμμ΄λ€.
곡μλ¬Έμμλ contains(_:)
μ μκ°λ³΅μ‘λκ° O(n)μ΄λΌκ³ λ§ μ€λͺ
λμ΄ μλ€.
νμ§λ§ contains μμ λ°°μ΄μ μ μμλΆν° νλμ© λΉκ΅νλ―λ‘, νμν μμκ° μμ μλ κ²½μ° nλ³΄λ€ λΉ λ₯΄κ² κ²°κ³Όκ°μ λ°ννλ€.
λ¨μνν΄ νννμλ©΄ [0, 0, 0, 0, 1]μμ contains(1)
λ‘ 1μ μ°Ύλ κ²λ³΄λ€ [1, 0, 0, 0, 0]μμ contains(1)
λ‘ 1μ μ°Ύλ κ²μ΄ λ λΉ λ₯΄λ€λ κ²μ΄λ€. μ°Ύλ μμκ° λ§¨ μμ μκΈ° λλ¬Έμ΄λ€.
(μμΈν λ΄μ©μ contains(_:)
λ¬Έμμ ν¨κ» ν΄μν μ΄ κΈμ μ€λͺ
λμ΄ μλ€)
κ²°λ‘
==
λ₯Ό μ¬μ©νλ νμ΄1μ, μ΅μ
μ κ²½μ° μ‘°κ±΄λ¬Έ (char == "a" || char == "e" || char == "i" || char == "o" || char == "u"
) μ μ λΆ λΉκ΅ν΄μΌ νμ§λ§, μμ μ‘°κ±΄λ¬Έμ΄ νλλΌλ trueμΈ κ²½μ° short-circuit evaluationμ μν΄ λλ¨Έμ§ μ‘°κ±΄λ¬Έμ μ€νλμ§ μλλ€.
contains(_:)
λ₯Ό μ¬μ©νλ νμ΄2 μμ, μ΅μ
μ κ²½μ° λͺ¨μ λ°°μ΄μ λκΉμ§ μμκ° ν¬ν¨λλμ§ λΉκ΅ν΄μΌ νμ§λ§, μ°Ύλ μμκ° μμͺ½μ μλ κ²½μ° λλ¨Έμ§ λΉκ΅λ₯Ό λ©μΆκ³ μ¦μ trueλ₯Ό λ°ννλ€.
κ·Έλ κΈ° λλ¬Έμ 쑰건문 λΉκ΅ μμ(char == "a" || char == "e" || char == "i" || char == "o" || char == "u"
) μ containsλ₯Ό νμΈνλ λ°°μ΄μ μμ μμ(["a", "e", "i", "o", "u"]
)κ° κ°μ ν λμ λμΌν μκ°λ³΅μ‘λλ₯Ό κ°μ§λ κ²μ΄λ€!