๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

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

by hyebin (Helia) 2023. 3. 10.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ

์˜น์•Œ์ด

๋ฌธ์ œ ์„ค๋ช…

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

์ œํ•œ ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

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

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

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

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

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

  • ["ayaye", "uuuma", "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 baby = ["aya", "ye", "woo", "ma"]
    var answer = 0
    
    for b in babbling{
        var temp = b
        var cnt = 0
        
        for i in baby{
            if temp.contains(i){
                temp = temp.replacingOccurrences(of: i, with: " ")
                if temp.contains("  ") {break}
                cnt += (temp.filter{$0 == " "}.count * i.count)
                temp = b
            }
        }
        if cnt == b.count {answer += 1}
    }
    return answer
}
ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐœ์Œ 4๊ฐœ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด baby์™€, ์ตœ์ข… ๊ฒฐ๊ด๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜ answer๋ฅผ ์„ ์–ธํ•œ๋‹ค.

์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด babbling์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•œ๋‹ค.
๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜ temp์™€ cnt๋ฅผ ์„ ์–ธํ•œ๋‹ค.
temp์— baby์˜ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„์„ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
๋งŒ์•ฝ 2๊ฐœ์˜ ๊ณต๋ฐฑ์ด ์—ฐ์†๋œ๋‹ค๋ฉด, ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.
cnt ๋ณ€์ˆ˜์— (๊ณต๋ฐฑ์˜ ๊ฐœ์ˆ˜*์š”์†Œ์˜ ๊ธ€์ž์ˆ˜) ๋งŒํผ ๋”ํ•œ๋‹ค.

๋งŒ์•ฝ cnt ๋ณ€์ˆ˜์˜ ๊ฐ’์ด babbling์˜ ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ๊ฐ™๋‹ค๋ฉด, answer ๋ณ€์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
(ex- ayaye ์ธ๊ฒฝ์šฐ cnt ๋ณ€์ˆ˜๋Š” 3+2 = 5๋ฅผ ๊ฐ–๋Š”๋‹ค. ayaye์˜ ๊ธธ์ด๋„ 5์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์ด ์ผ์น˜ํ•˜๋ฉด 1 ์ฆ๊ฐ€ํ•œ๋‹ค.)

๋‹ค๋ฅธ ํ’€์ด

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
}
๋ฐฐ์—ด babbling์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•œ๋‹ค.
๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ str ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
str ๋ณ€์ˆ˜์—์„œ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐœ์˜ ๋ฐœ์Œ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์ˆœ์„œ๋Œ€๋กœ 1,2,3,4๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
str ๋ณ€์ˆ˜๋ฅผ Int๋กœ ๋ณ€ํ™˜ํ•˜์˜€์„ ๋•Œ nil์ด ์•„๋‹ˆ๊ณ  (๋ชจ๋‘ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐœ์Œ์œผ๋กœ ๊ตฌ์„ฑ), ์—ฐ์†์œผ๋กœ ๊ฐ™์€ ๋ฐœ์Œ์ด ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ count ๋ณ€์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

๋ฐ˜์‘ํ˜•