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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.0] ์•”ํ˜ธ ํ•ด๋…

by hyebin (Helia) 2023. 1. 9.
๋ฐ˜์‘ํ˜•

์•”ํ˜ธ ํ•ด๋…

๋ฌธ์ œ ์„ค๋ช…

๊ตฐ ์ „๋žต๊ฐ€ ๋จธ์“ฑ์ด๋Š” ์ „์Ÿ ์ค‘ ์ ๊ตฐ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•”ํ˜ธ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด cipher๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ๋ฌธ์ž์—ด์—์„œ code์˜ ๋ฐฐ์ˆ˜ ๋ฒˆ์งธ ๊ธ€์ž๋งŒ ์ง„์งœ ์•”ํ˜ธ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด cipher์™€ ์ •์ˆ˜ code๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ํ•ด๋…๋œ ์•”ํ˜ธ ๋ฌธ์ž์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ cipher์˜ ๊ธธ์ด ≤ 1,000
  • 1 ≤ code ≤ cipher์˜ ๊ธธ์ด
  • cipher๋Š” ์†Œ๋ฌธ์ž์™€ ๊ณต๋ฐฑ์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณต๋ฐฑ๋„ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

cipher code result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk" 2 "fallback"

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

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

  • "dfjardstddetckdaccccdegk"์˜ 4๋ฒˆ์งธ, 8๋ฒˆ์งธ, 12๋ฒˆ์งธ, 16๋ฒˆ์งธ, 20๋ฒˆ์งธ, 24๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ํ•ฉ์นœ "attack"์„ return ํ•ฉ๋‹ˆ๋‹ค.

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

  • "pfqallllabwaoclk" ์˜ 2๋ฒˆ์งธ, 4๋ฒˆ์งธ, 6๋ฒˆ์งธ, 8๋ฒˆ์งธ, 10๋ฒˆ์งธ, 12๋ฒˆ์งธ, 14๋ฒˆ์งธ, 16๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ํ•ฉ์นœ "fallback"์„ returnํ•ฉ๋‹ˆ๋‹ค.
 

์ œ์ถœ

import Foundation

func solution(_ cipher:String, _ code:Int) -> String {
    let cipher = cipher.map{String($0)}
    var answer = ""
  
    for i in stride(from: code, through: cipher.count, by: code){
        answer += cipher[i-1]
    }

    return answer
}
์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด Stringํ˜• ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
for๋ฌธ์„ stride ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ๋ฐ›์€ code๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๊นŒ์ง€ code ํฌ๊ธฐ๋งŒํผ i๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋ฐฐ์—ด์˜ i-1 ๋ฒˆ์งธ ์š”์†Œ๋ฅผ answer์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•