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

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„๋ฌธ์ž์—ด

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

ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„๋ฌธ์ž์—ด

๋ฌธ์ œ ์„ค๋ช…

์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด t์™€ p๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, t์—์„œ p์™€ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋ถ€๋ถ„๋ฌธ์ž์—ด ์ค‘์—์„œ, ์ด ๋ถ€๋ถ„๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜๊ฐ€ p๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒƒ์ด ๋‚˜์˜ค๋Š” ํšŸ์ˆ˜๋ฅผ return ํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•˜์„ธ์š”.

 

์˜ˆ๋ฅผ ๋“ค์–ด, t="3141592"์ด๊ณ  p="271"์ธ ๊ฒฝ์šฐ, t์˜ ๊ธธ์ด๊ฐ€ 3์ธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์€ 314, 141, 415, 159, 592์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜ ์ค‘ 271๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜๋Š” 141, 159 2๊ฐœ์ž…๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ p์˜ ๊ธธ์ด ≤ 18
  • p์˜ ๊ธธ์ด ≤ t์˜ ๊ธธ์ด ≤ 10,000
  • t์™€ p๋Š” ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ด๋ฉฐ, 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

t p result
"3141592" "271" 2
"500220839878" "7" 8
"10203" "15" 3

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

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

  • ๋ณธ๋ฌธ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

  • p์˜ ๊ธธ์ด๊ฐ€ 1์ด๋ฏ€๋กœ t์˜ ๋ถ€๋ถ„๋ฌธ์ž์—ด์€ "5", "0", 0", "2", "2", "0", "8", "3", "9", "8", "7", "8"์ด๋ฉฐ ์ด์ค‘ 7๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆซ์ž๋Š” "5", "0", "0", "2", "2", "0", "3", "7" ์ด๋ ‡๊ฒŒ 8๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • p์˜ ๊ธธ์ด๊ฐ€ 2์ด๋ฏ€๋กœ t์˜ ๋ถ€๋ถ„๋ฌธ์ž์—ด์€ "10", "02", "20", "03"์ด๋ฉฐ, ์ด์ค‘ 15๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆซ์ž๋Š” "10", "02", "03" ์ด๋ ‡๊ฒŒ 3๊ฐœ์ž…๋‹ˆ๋‹ค. "02"์™€ "03"์€ ๊ฐ๊ฐ 2, 3์— ํ•ด๋‹นํ•œ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”

์ œ์ถœ

import Foundation

func solution(_ t:String, _ p:String) -> Int {
    var cnt = 0
    var n = Int(p)!
    for i in 0...t.count - p.count{
        cnt += Int(t.map{String($0)}[i..<i+p.count].joined())! <= n ? 1 : 0
    }
    return cnt
}
์ตœ์ข… ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜ cnt์™€ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด p๋ฅผ Intํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅํ•œ ๋ณ€์ˆ˜ n์„ ์„ ์–ธํ•œ๋‹ค.
i๋ฅผ 0๋ถ€ํ„ฐ (t์˜ ๊ธธ์ด - p์˜ ๊ธธ์ด)๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ๋ฐ˜๋ณตํ•œ๋‹ค. (๋ฐ˜๋ณต๋ฌธ์—์„œ i์— p์˜ ๊ธธ์ด๋ฅผ ๋”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—)
t๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ฐ”๊พผ ํ›„, ์ธ๋ฑ์Šค i๋ถ€ํ„ฐ  i+p๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ Int๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ, n ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด cnt ๋ณ€์ˆ˜์— 1์„ ์•„๋‹ˆ๋ผ๋ฉด 0์„ ๋”ํ•œ๋‹ค.

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

import Foundation

func solution(_ t:String, _ p:String) -> Int {
    let n = p.count, p_num = Int(p)!
    var result = 0
    
    for i in 0...t.count-n{
        let s = t.dropFirst(i).prefix(n)
        if p_num >= Int(s)!{result += 1}
    }
    return result
}
n์€ p์˜ ๊ธธ์ด๋ฅผ, p_num์€ ๋ฌธ์ž์—ด p๋ฅผ Intํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
์ตœ์ข… ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜ result๋„ ์„ ์–ธํ•œ๋‹ค.

i๋ฅผ 0๋ถ€ํ„ฐ (t์˜ ๊ธธ์ด - n)๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ๋ฐ˜๋ณตํ•œ๋‹ค.
๋ฌธ์ž์—ด t์˜ i๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ n๊ฐœ์˜ ๋ฌธ์ž์—ด์„ s์— ์ €์žฅํ•œ๋‹ค.
๋ฌธ์ž์—ด s๋ฅผ Int๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์ด p_num๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, result๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
๋ฐ˜์‘ํ˜•