๐Ÿง‘๐Ÿป‍๐Ÿ’ป Coding Test/โŒจ๏ธ Programmers

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ] ์˜น์•Œ์ด(2)

EarthSea 2024. 3. 11. 10:52

 

 

 

๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด

โœ๐Ÿป Github

๋ฌธ์ œ ํ’€์ด github ๋งํฌ

 


 

๋ฌธ์ œ ์„ค๋ช…

๋จธ์“ฑ์ด๋Š” ํƒœ์–ด๋‚œ ์ง€ 11๊ฐœ์›” ๋œ ์กฐ์นด๋ฅผ ๋Œ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์นด๋Š” ์•„์ง "aya", "ye", "woo", "ma" ๋„ค ๊ฐ€์ง€ ๋ฐœ์Œ๊ณผ ๋„ค ๊ฐ€์ง€ ๋ฐœ์Œ์„ ์กฐํ•ฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐœ์Œ๋ฐ–์— ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์—ฐ์†ํ•ด์„œ ๊ฐ™์€ ๋ฐœ์Œ์„ ํ•˜๋Š” ๊ฒƒ์„ ์–ด๋ ค์›Œํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๋ฐฐ์—ด babbling์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋จธ์“ฑ์ด์˜ ์กฐ์นด๊ฐ€ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ babbling์˜ ๊ธธ์ด ≤ 100
  • 1 ≤ babbling[i]์˜ ๊ธธ์ด ≤ 30
  • ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

babbling result

babbling result
["aya", "yee", "u", "maa"] 1
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] 2

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ["aya", "yee", "u", "maa"]์—์„œ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ "aya"๋ฟ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"]์—์„œ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ "aya" + "ye" = "ayaye", "ye" + "ma" + "woo" = "yemawoo"๋กœ 2๊ฐœ์ž…๋‹ˆ๋‹ค. "yeye"๋Š” ๊ฐ™์€ ๋ฐœ์Œ์ด ์—ฐ์†๋˜๋ฏ€๋กœ ๋ฐœ์Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

 

์œ ์˜์‚ฌํ•ญ

  • ๋„ค ๊ฐ€์ง€๋ฅผ ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐœ์Œ ์ด์™ธ์—๋Š” ์–ด๋–ค ๋ฐœ์Œ๋„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๊ทœ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "woowo"๋Š” "woo"๋Š” ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "wo"๋ฅผ ๋ฐœ์Œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•  ์ˆ˜ ์—†๋Š” ๋ฐœ์Œ์ž…๋‹ˆ๋‹ค.

 


 

 

๋ฌธ์ œ ํ’€์ด

๋‚˜์˜ ํ’€์ด

import Foundation

func solution(_ babbling:[String]) -> Int {
    
    // ์•„๊ธฐ๊ฐ€ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜น์•Œ์ด์˜ ๊ฐœ์ˆ˜
    var count = 0
    // ์•„๊ธฐ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜น์•Œ์ด
    let word = [ "aya", "ye", "woo", "ma"]
    
    for bab in babbling {
    
        var bab = bab
        // ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ๊ธฐ์œ„ํ•œ ๋ฌธ์ž์—ด ์ €์žฅ
        var pre: String = ""
        
        while true {
            if bab.count < 2 {
                break
            }else if bab.count == 2 {
                let bab2 = String(bab.prefix(2))
                if word.contains(bab2) && bab2 != pre {
                    pre = bab2
                    bab.removeFirst(2)
                }else {
                    break
                }
            }else {
                let bab2 = String(bab.prefix(2))
                let bab3 = String(bab.prefix(3))
                
                if word.contains(bab2) && bab2 != pre {
                    pre = bab2
                    bab.removeFirst(2)
                }else if word.contains(bab3) && bab3 != pre {
                    pre = bab3
                    bab.removeFirst(3)
                }else {
                    break
                }
            }
            
            if bab == "" {
                count += 1
                break
            }

        }
    }
    return count
}

 

์šฐ์„ ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€์— ์ง‘์ค‘ํ•ด์„œ ํ’€์—ˆ๋‹ค.

  1. ๋ฌธ์ž์—ด์ด ๋ฐ˜๋ณต์ด ๋˜๋ฉด ๋ฌธ์ž์—ด ๋น„๊ต ์ข…๋ฃŒ
  2. ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ์ถœ๋ ฅ

 

์•„๊ธฐ๊ฐ€ ๋‚ผ ์ˆ˜ ์žˆ๋Š” babbling์ด 4๊ฐ€์ง€ ๋ฐ–์— ๋˜์ง€ ์•Š๊ณ  ์†Œ๋ฆฌ์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ ์•„๋‹ˆ๋ฉด 3๊ฐœ์ด๋‹ค.

์ด๋ฅผ ์ด์šฉํ•ด babbling์˜ ์•ž์— 2๊ฐœ๋‚˜ 3๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๊บผ๋‚ด์„œ ( prefix ์‚ฌ์šฉ )

์•„๊ธฐ๊ฐ€ ๋‚ผ ์ˆ˜ ์žˆ๋Š” babbling์— ํฌํ•จ์ด ๋˜๊ฑฐ๋‚˜ ์ค‘๋ณต์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋„๋ก ํ’€์—ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋ฌธ์ž์—ด์ด 3๊ฐœ ์ด์ƒ์ด๋ฉด, prefix(2), prefix(3)์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

๋ฌธ์ž์—ด์ด 2๊ฐœ ์ด์ƒ์ด๋ฉด, prefix(3)์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์–ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ ค๋‹ค ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ์„ ํ–ˆ๋‹ค.

 

๋ฌธ์ž์—ด์ด 2๊ฐœ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 2๊ฐœ๋ผ๋ฉด prefix(2)๋กœ ๋น„๊ต

๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 3๊ฐœ๋ผ๋ฉด prefix(3)๊ณผ prefix(2) ๋‘˜๋‹ค ๋น„๊ต

 

์‹คํ–‰ํ•˜์˜€์„ ๋•Œ์˜ ์‹œ๊ฐ„์ด๋‹ค.

ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.07ms, 16.4MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.06ms, 16.4MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.09ms, 15.8MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.06ms, 16MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.05ms, 16.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.05ms, 16.4MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.04ms, 16.5MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.07ms, 16.1MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.07ms, 16.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.05ms, 16.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.10ms, 16MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.47ms, 16.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.49ms, 16.2MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.53ms, 16.1MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.27ms, 16.4MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.24ms, 16.2MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (0.84ms, 16.5MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.34ms, 16.2MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.07ms, 16.1MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.16ms, 16.4MB)

 

์—ฌ๋Ÿฌ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์งœ์—ฌ์ง„๊ฑฐ ๊ฐ™์•„ ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๋ถˆ๊ฐ€๋Šฅ.. ใ…Ž

๊ทธ๋ž˜๋„ ์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„์„ ๋œ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ๋งŽ์ด ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

์ฒซ๋ฒˆ์งธ,

import Foundation

func solution(_ babbling:[String]) -> Int {
    var count: Int = 0
    for element in babbling {
        var str = String(element)
        str = str.replacingOccurrences(of: "aya", with: "1")
        str = str.replacingOccurrences(of: "ye", with: "2")
        str = str.replacingOccurrences(of: "woo", with: "3")
        str = str.replacingOccurrences(of: "ma", with: "4")
        if Int(str) != nil && !str.contains("11") && !str.contains("22") && !str.contains("33") && !str.contains("44"){
            count += 1
        }
    }    
    return count
}

 

์ด ๋ถ„์˜ ํ’€์ด๋Š” replacingOccurrences๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค.

๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ์ง€ ์•Š๊ณ  ํฌํ•จ์ด ๋˜์–ด์žˆ๋Š” ๋ฌธ์ž์—ด์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด ์ข‹์€ ์ฝ”๋“œ์ธ๊ฒƒ ๊ฐ™๊ณ ,

' ๋ฌธ์ž์—ด ๋Œ€์ฒด๋Š” replacingOccurrences '์ธ๋ฐ ์™œ ์ƒ๊ฐํ•ด๋‚ด์ง€ ๋ชปํ–ˆ๋‚˜ ๋ผ๋Š” ์ž๊ธฐ ๋ฐ˜์„ฑ๋„ ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด ๋ถ„์€ ๋ฐ˜๋ณต๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ if๋ฌธ์˜ ์กฐ๊ฑด์„ ๋‚˜์—ดํ•˜์˜€๋Š”๋ฐ, ์ด ๋ถ€๋ถ„๋„ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋‹ค๋งŒ ์‹œ๊ฐ„์„ ๋ดค์„ ๋•Œ,

ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.45ms, 16.4MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.27ms, 16.4MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.42ms, 16.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.32ms, 16.3MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.27ms, 16.6MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.26ms, 16.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.38ms, 16.3MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.38ms, 16.5MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.48ms, 16.4MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.31ms, 16.3MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.57ms, 16.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (1.90ms, 16.6MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (2.08ms, 16.6MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (1.79ms, 16.4MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (3.33ms, 16.4MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (2.13ms, 16.5MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (2.69ms, 16.5MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (3.69ms, 16.6MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.82ms, 16.5MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (1.52ms, 16.4MB)

 

replacingOccurences์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n)์ด๋ฏ€๋กœ

๋Œ€๋žต์ ์œผ๋กœ ๋ฐฐ์—ด ํ•˜๋‚˜๋‹น ์‹œ๊ฐ„๋ณต์žก๋„์˜ ์ตœ๋Œ€๊ฐ€ O(n) * 4 ์ผ ๊ฒƒ์ด๋‹ค. ( n์€ ๋ฌธ์ž์—ด ๊ธธ์ด )

์—ฌ๊ธฐ์„œ babbling์˜ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ๋ฐ˜๋ณต์ด ๋˜๋‹ˆ

  • 1 ≤ babbling์˜ ๊ธธ์ด ≤ 100
  • 1 ≤ babbling[i]์˜ ๊ธธ์ด ≤ 30

์ด ๋ถ€๋ถ„์„ ํ™•์ธํ–ˆ์„ ๋•Œ, ์ด๋ถ„์˜ ์‹œ๊ฐ„๋ณต์žก๋„์˜ ์ตœ๋Œ€๊ฐ’์€ 100 * ( O(30) * 4 ) ์ด๋‹ค.

 

์ด ๋ฌธ์ œ์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•˜์—ฌ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ์‹œ๊ฐ„์ ์œผ๋กœ๋Š” ํšจ์œจ์ ์ด์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

๋‘ ๋ฒˆ์งธ,

import Foundation

func solution(_ babbling:[String]) -> Int {
    let strArr = ["aya", "ye", "woo", "ma"]

    var answer = 0
    func checkWord(_ str: String) -> Bool {
        var b = str

        for s in strArr {
            b = b.replacingOccurrences(of: s, with: "-")
            if b.contains("--") { return false }
            b = b.replacingOccurrences(of: "-", with: " ")

        }

        return b.replacingOccurrences(of: " ", with: "").isEmpty
    }

    for babble in babbling {
        if checkWord(babble) {
            answer += 1
        }
    }

    return answer
}

 

์ด ๋ถ„์€ ์œ„์— ๋ถ„๊ณผ ๋™์ผํ•˜๊ฒŒ replacingOccurrences๋ฅผ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ,

๋ฐ˜๋ณต๋ฌธ์„ ๋‘ ๋ฒˆ ๋Œ๋ฆฌ๋ฉด์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์ด ๋‚˜์˜ค๋Š” ์ฆ‰์‹œ ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

 

๋‹ค๋งŒ, ๋ฌธ์ž์—ด์ด ๋ฐ˜๋ณต์ด ๋œ๋‹ค๋ฉด ๋ฌธ์ž์—ด ์ข…๋ฃŒ๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒŒ ์žˆ์œผ๋‚˜ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์—์„œ -๋กœ ๋ฐ”๊พธ๊ณ  ๋ฐ˜๋ณต์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค์‹œ “ “๋กœ ๋ฐ”๊พธ๋Š” ๋ถ€๋ถ„์ด ํ•„์š”์น˜ ์•Š๊ฒŒ replacingOccurences์˜ ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€๋‹ค. 

ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.31ms, 16.5MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.37ms, 16.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.40ms, 16.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.25ms, 16.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.29ms, 16.3MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.27ms, 16.5MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.25ms, 16.5MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.28ms, 16.5MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.46ms, 16.5MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.48ms, 16.4MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.50ms, 16.4MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (2.46ms, 16.5MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (6.67ms, 16.4MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (3.50ms, 16.6MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (2.53ms, 16.4MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (7.09ms, 16.6MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (4.47ms, 16.6MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (4.78ms, 16.5MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (1.11ms, 16.3MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (2.24ms, 16.4MB)

 

 

 

์„ธ ๋ฒˆ์งธ,

func solution(_ babbling: [String]) -> Int {
    return babbling.filter { $0.range(of: "^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$", options: .regularExpression) != nil }.count
}

 

์‚ฌ์‹ค ์ด ๋ถ„๊บผ๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ํ•˜๊ธฐ ์‹ซ์—ˆ์ง€๋งŒ, ์‹œ๊ฐ„์ด ๊ถ๊ธˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

( ์ € ์ฝ”๋“œ์— babbling ๋Œ€์‹ ์— OO์†Œ๋ฆฌ๋ผ๊ณ  ์š•์ด ์ ํ˜€์žˆ์—ˆ์Œ.. ์ธ์„ฑ.. )

 

regularExpression์ด๋ผ๋Š” ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘ธ์…จ๋‹ค.

์‚ฌ์‹ค ์‹œ๊ฐ„์ด ์ ค ์ ๊ฒŒ ๊ฑธ๋ฆด ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์ด ๋‚˜์™€์„œ ๋†€๋žฌ๋‹ค.

 

ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (1.76ms, 17.9MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (1.91ms, 17.8MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (1.95ms, 17.6MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (1.86ms, 17.8MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1.82ms, 17.7MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (2.73ms, 17.9MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (1.85ms, 17.7MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (1.70ms, 17.7MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.76ms, 17.6MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (1.88ms, 17.8MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (1.87ms, 17.6MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (2.41ms, 17.6MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (2.42ms, 17.7MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (2.46ms, 17.9MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (3.64ms, 17.6MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (2.39ms, 18MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (2.54ms, 17.6MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (3.59ms, 17.8MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (1.95ms, 18.1MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (2.22ms, 18.1MB)

 

๊ธธ์ด๊ฐ€ ์งง์€ ์ผ€์ด์Šค ๋“ค์—์„œ ์†๋„๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆฌ์—ˆ๊ณ , ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๋Œ€๋ถ€๋ถ„์˜ ์ผ€์ด์Šค์˜ ์‹œ๊ฐ„์ด ๋น„์Šทํ•˜๊ฒŒ ๊ฑธ๋ ธ๋‹ค.

 

์ •๊ทœํ‘œํ˜„์‹์˜ ํŒจํ„ด์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…๋„ ํ•˜๋‚˜ ์˜ฌ๋ ค์•ผ๊ฒ ๋‹ค.

 

 

์ค‘์š”ํ•œ ๊ฐœ๋…

  • replacingOccurences์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)