โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/String

[๋ฌธ์ž์—ด / Kotlin] 2020 KAKAO BLIND RECRUITMENT - ๋ฌธ์ž์—ด ์••์ถ•

2022. 3. 11. 22:31
๋ชฉ์ฐจ
  1. ํ’€์ด ์–ธ์–ด
  2. ์ฝ”๋“œ
  3. ํ’€์ด ๋ฐฉ๋ฒ•
  4. ๊ฒฐ๊ณผ

ํ’€์ด ์–ธ์–ด

Kotlin

์ฝ”๋“œ

fun solution(s: String): Int {
    var minLength = s.length

    for (i in 0 until s.length / 2) {
        var subString = s.slice(0..i)
        var answer = ""
        var cnt = 1
        var last = 0

        for (j in i + 1 until s.length - i step i + 1) {
            // ๋งˆ์ง€๋ง‰ Index ๋ฅผ ์ €์žฅํ•œ๋‹ค.
            last = j + i + 1
            // ๊ฐ™์€ SubString ์ธ ๊ฒฝ์šฐ ์ด๋ฅผ ์นด์šดํŠธํ•œ๋‹ค.
            if (subString == s.slice(j..j + i)) cnt += 1
            // ๋‹ค๋ฅธ SubString ์ธ ๊ฒฝ์šฐ
            else {
                if (cnt > 1) {
                    // ์ˆซ์ž + SubString ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
                    answer += cnt.toString() + subString
                } else {
                    answer += subString
                }
                // SubString ์„ ์ƒˆ๋กญ๊ฒŒ ์„ค์ •ํ•œ๋‹ค.
                subString = s.slice(j..j + i)
                cnt = 1
            }
        }

        // ํ•œ ๋ฒˆ ๋” ์ง„ํ–‰ํ•œ๋‹ค.
        if (cnt > 1) {
            answer += cnt.toString() + subString
        } else {
            answer += subString
        }

        // ๋‚จ์•„ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
        answer += s.slice(last until s.length)

        // ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค.
        if (minLength > answer.length) minLength = answer.length
    }
    return minLength
}

ํ’€์ด ๋ฐฉ๋ฒ•

์ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฌธ์ž์—ด์„ Slice ํ•  ๋•Œ ๋ชจ๋‘ ๊ฐ™์€ ํฌ๊ธฐ๋งŒํผ ๋‚˜๋ˆ„์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งˆ์ง€๋ง‰ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ณด๋ฉด xababcdcdababcdcd (17์ž) ๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ x / ababcdcd/ ababcdcd ์ด๋Ÿฐ ์‹์œผ๋กœ ๋Š์œผ๋ฉด x2ababcdcd ๋กœ ์••์ถ•๋  ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋‘ ๊ฐ™์€ ํฌ๊ธฐ๋งŒํผ ๋‚˜๋ˆ„์–ด์•ผํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฅผ ์—ผ๋‘ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž. ๋กœ์ง์€ ๋‹จ์ˆœํ•˜๋‹ค. ๋ฌธ์ž์—ด์„ ํŠน์ •ํ•œ ํฌ๊ธฐ์— ๋”ฐ๋ผ Slice ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

 

1. ์ด ๋•Œ, ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ„๋Š” SubString์˜ ํฌ๊ธฐ๋Š” 1 ~ ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ/2 ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

2. ๊ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์™„์ „ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค.

3. ์œ„์—์„œ ์„ค์ •ํ•œ SubString๊ณผ ๊ฐ™์€ SubString ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ด๋ฅผ ์นด์šดํŠธํ•œ๋‹ค.

4. ๋‹ค๋ฅธ SubString ์ด ๋‚˜์˜จ ๊ฒฝ์šฐ ์œ„์—์„œ ์นด์šดํŠธํ•œ SubString์„ ์ˆซ์ž + SubString์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.

5. ๋‹ค๋ฅธ SubString ์„ ์ƒˆ๋กœ์šด SubString ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์žก๊ณ  ํƒ์ƒ‰์„ ๊ณ„์†ํ•œ๋‹ค.

 

ํƒ์ƒ‰ ์™„๋ฃŒ ์ดํ›„์— ๋‚จ์€ ๋ฌธ์ž์—ด์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋งˆ์ง€๋ง‰ Index ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ๋” ํ•ด์ฃผ๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๊ฒฐ๊ณผ

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„ > String' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฌธ์ž์—ด / Kotlin] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ - ํŠœํ”Œ  (0) 2022.03.22
[๋ฌธ์ž์—ด / Kotlin] 2019 KAKAO BLIND RECRUITMENT - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ  (0) 2022.03.13
  1. ํ’€์ด ์–ธ์–ด
  2. ์ฝ”๋“œ
  3. ํ’€์ด ๋ฐฉ๋ฒ•
  4. ๊ฒฐ๊ณผ
'โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/String' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฌธ์ž์—ด / Kotlin] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ - ํŠœํ”Œ
  • [๋ฌธ์ž์—ด / Kotlin] 2019 KAKAO BLIND RECRUITMENT - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ
kodo_o
kodo_o
iOS ๊ฟ€์žผ!
kodo_o
๐ŸŽ๐Ÿ
kodo_o
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (149)
    • ๐Ÿ”จ ํ”„๋กœ์ ํŠธ (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • ๐Ÿ’ป ๊ฐœ๋ฐœ (63)
      • iOS (30)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • ์˜ค๋Š˜์˜ ์‚ฝ์งˆ (7)
      • ์—๋Ÿฌ์™€์˜ ๋™์นจ (1)
    • โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„ (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • ๐Ÿ“š CS (6)
      • Operating System (6)
    • โ›น๏ธ ๋ผ์ดํ”„ (30)
      • 2020 ๊ฒจ์šธ๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (12)
      • 2021 ์—ฌ๋ฆ„๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (6)
      • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (1)
      • ํšŒ๊ณ  (10)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๊นƒํ—ˆ๋ธŒ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
kodo_o
[๋ฌธ์ž์—ด / Kotlin] 2020 KAKAO BLIND RECRUITMENT - ๋ฌธ์ž์—ด ์••์ถ•
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.