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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ

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

์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด s๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ์–ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณต๋ฐฑ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ์–ด์˜ ์ง์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์€ ๋Œ€๋ฌธ์ž๋กœ, ํ™€์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ๋ฌธ์ž์—ด ์ „์ฒด์˜ ์ง/ํ™€์ˆ˜ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹จ์–ด(๊ณต๋ฐฑ์„ ๊ธฐ์ค€) ๋ณ„๋กœ ์ง/ํ™€์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž๋Š” 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ๋ณด์•„ ์ง์ˆ˜๋ฒˆ์งธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

s return
"try hello world" "TrY HeLlO WoRlD"

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

์ž…์ถœ๋ ฅ ์˜ˆ

  • "try hello world"๋Š” ์„ธ ๋‹จ์–ด "try", "hello", "world"๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ์–ด์˜ ์ง์ˆ˜๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ, ํ™€์ˆ˜๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๋ฉด "TrY", "HeLlO", "WoRlD"์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "TrY HeLlO WoRlD"๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

func solution(_ s:String) -> String {
    var re = ""
    var count = 0

    for i in Array(s){
        if i == " "{
            re += " "
            count = 0
        }
        else if count%2 == 1{
            re += i.lowercased()
            count += 1
        }
        else{
            re += i.uppercased()
            count += 1
        }
    }

    return re
}
๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•  String ๋ณ€์ˆ˜ re์™€ ๋‹จ์–ด์˜ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  Int ๋ณ€์ˆ˜ count๋ฅผ ์„ ์–ธํ•œ๋‹ค.
์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๊ณต๋ฐฑ์ด๋ผ๋ฉด ํ•œ ๋‹จ์–ด๊ฐ€ ๋๋‚œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— re์— ๊ณต๋ฐฑ์„ ๋”ํ•œ ํ›„ count๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋ฉด re๋ณ€์ˆ˜์— ์†Œ๋ฌธ์ž๋ฅผ ๋”ํ•˜๊ณ , ์ง์ˆ˜๋ผ๋ฉด ๋Œ€๋ฌธ์ž๋ฅผ ๋”ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  count ๋ณ€์ˆ˜๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

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

import Foundation

func solution(_ s:String) -> String {
    let a = s.components(separatedBy: " ").map { $0.enumerated().map { $0.offset % 2 == 0 ? $0.element.uppercased() : $0.element.lowercased() } }
    return a.map{ $0.map { $0 }.joined() }.joined(separator: " ")
}
์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๊ณต๋ฐฑ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ํ›„, ๊ฐ ๋‹จ์–ด์— enumerated()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์™€ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
map์„ ์‚ฌ์šฉํ•ด ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๋Œ€๋ฌธ์ž๋ฅผ, ํ™€์ˆ˜๋ผ๋ฉด ์†Œ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ a์— ์ €์žฅํ•œ๋‹ค.

ex) ์ž…๋ ฅ์ด ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ์™€ ๊ฐ™์„ ๋•Œ, a = [["T", "r", "Y"], ["H", "e", "L", "l", "O"], ["W", "o", "R", "l", "D"]]

map๊ณผ joined๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์•ŒํŒŒ๋ฒณ์„ ์กฐํ•ฉํ•ด ๋‹จ์–ด๋ฅผ ๋งŒ๋“ค๊ณ , ๋‹จ์–ด๋“ค์„ ๊ณต๋ฐฑ์„ ๋„ฃ์–ด ์กฐํ•ฉํ•ด ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•