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

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ

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

๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด s๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๋จผ์ € ์ฒซ ๊ธ€์ž๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ž๋ฅผ x๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.
  • ์ด์ œ ์ด ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด๋‚˜๊ฐ€๋ฉด์„œ, x์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž๋“ค์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์…‰๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • s์—์„œ ๋ถ„๋ฆฌํ•œ ๋ฌธ์ž์—ด์„ ๋นผ๊ณ  ๋‚จ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ๋” ์ด์ƒ ์ฝ์„ ๊ธ€์ž๊ฐ€ ์—†๋‹ค๋ฉด, ์—ญ์‹œ ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ๊ณผ์ •๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋“ค๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๋ถ„ํ•ดํ•œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ s์˜ ๊ธธ์ด ≤ 10,000
  • s๋Š” ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

s result
"banana" 3
"abracadabra" 6
"aaabbaccccabba" 3

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

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

  • s = "banana"์ธ ๊ฒฝ์šฐ ba - na - na์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.

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

  • s = "abracadabra"์ธ ๊ฒฝ์šฐ ab - ra - ca - da - br - a์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.

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

  • s = "aaabbaccccabba"์ธ ๊ฒฝ์šฐ aaabbacc - ccab - ba์™€ ๊ฐ™์ด ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ s:String) -> Int {
    var stringValue = s.map{String($0)}
    var x = stringValue[0], x_cnt = 0, not_x_cnt = 0
    var result = 0
    
    for i in stringValue{
        if x_cnt != 0 && x_cnt == not_x_cnt{
            result += 1
            x_cnt = 0
            not_x_cnt = 0
            x = i
        }
        
        if x == i {x_cnt += 1}
        else {not_x_cnt += 1}
    }
    
    return result+1
}
์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด s๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ด stringValue์— ์ €์žฅํ•œ๋‹ค.
๊ธฐ์ค€์ด ๋˜๋Š” ๋ฌธ์ž๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜ x์™€, x์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜  x_cnt, not_x_cnt๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

stringValue ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ํƒ์ƒ‰ํ•œ๋‹ค.
x์˜ ๊ฐœ์ˆ˜๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ , x์˜ ๊ฐœ์ˆ˜์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ, result ๋ณ€์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ ํ›„ x_cnt์™€ not_x_cnt ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋˜ํ•œ ๊ธฐ์ค€์ด ๋˜๋Š” ๋ฌธ์ž x๋ฅผ i๋กœ ๋ฐ”๊พผ๋‹ค.
x๊ฐ€ i์™€ ๊ฐ™์œผ๋ฉด x_cnt๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ , x์™€ i๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด not_x_cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

๋งˆ์ง€๋ง‰ ๋ถ„ํ•ดํ•œ ๋ฌธ์ž์—ด์„ result ๋ณ€์ˆ˜์— ๋”ํ•ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, result+1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•