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

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

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

๋ฌธ์ž์—ด ๋ฐ€๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด "hello"์—์„œ ๊ฐ ๋ฌธ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ๋ฐ€๊ณ  ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ๋งจ ์•ž์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด "ohell"์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ฌธ์ž์—ด์„ ๋ฏผ๋‹ค๊ณ  ์ •์˜ํ•œ๋‹ค๋ฉด ๋ฌธ์ž์—ด A์™€ B๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, A๋ฅผ ๋ฐ€์–ด์„œ B๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ€์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ return ํ•˜๊ณ  ๋ฐ€์–ด์„œ B๊ฐ€ ๋  ์ˆ˜ ์—†์œผ๋ฉด -1์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 0 < A์˜ ๊ธธ์ด = B์˜ ๊ธธ์ด < 100
  • A, B๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

A B result
"hello" "ohell" 1
"apple" "elppa" -1
"atat" "tata" 1
"abc" "abc" 0

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

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

  • "hello"๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ๋ฐ€๋ฉด "ohell"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

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

  • "apple"์€ ๋ช‡ ๋ฒˆ์„ ๋ฐ€์–ด๋„ "elppa"๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

  • "atat"๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ, ์„ธ ์นธ์„ ๋ฐ€๋ฉด "tata"๊ฐ€ ๋˜๋ฏ€๋กœ ์ตœ์†Œ ํšŸ์ˆ˜์ธ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

  • "abc"๋Š” ๋ฐ€์ง€ ์•Š์•„๋„ "abc"์ด๋ฏ€๋กœ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ A:String, _ B:String) -> Int {
    if A == B {return 0}
    var sValue = A
    for i in 1..<sValue.count{
        var temp = sValue.removeLast()
        sValue.insert(temp, at: sValue.startIndex)
        if sValue == B {return i}
    }

    return -1
}
๋‘ ๋ฌธ์ž์—ด์ด ๋™์ผํ•˜๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

i๋ฅผ 1๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊นŒ์ง€ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
A์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์‚ญ์ œํ•œ ํ›„ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, B์™€ ๋™์ผํ•˜๋‹ค๋ฉด i๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋ฌธ์ž์—ด์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฏธ๋Š” ๋™์ž‘)

for๋ฌธ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ B์™€ ๊ฐ™์•„์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค๋ฉด, A๋Š” B๊ฐ€ ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

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

import Foundation

func solution(_ A:String, _ B:String) -> Int {
    let arr = (A+A).components(separatedBy: B)
    return arr.count == 1 ? -1 : arr[1].count
}
A์— A๋ฅผ ๋”ํ•ด์ค€ ํ›„, B๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 1์ด๋ผ๋ฉด, A๋Š” B๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์— -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 1์ด ์•„๋‹ˆ๋ผ๋ฉด, ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•