[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 60057 ๋ฌธ์ž์—ด ์••์ถ• (python ํŒŒ์ด์ฌ)

2022. 12. 7. 16:42ยท๐Ÿงฉ Problem Solving/[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

https://school.programmers.co.kr/learn/courses/30/lessons/60057

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œ์—์„œ ๋ฌธ์ž์—ด์€ ์ œ์ผ ์•ž๋ถ€ํ„ฐ ์ •ํ•ด์ง„ ๊ธธ์ด๋งŒํผ ์ž˜๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.๋ผ๋Š” ์กฐ๊ฑด ๋•๋ถ„์— ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


์•„์ด๋””์–ด

1. ๋ฌธ์ž์—ด ์ผ์ • ๋‹จ์œ„๋กœ ์ž๋ฅด๊ธฐ

  • ํŒŒ์ด์ฌ์— ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ์„ ํ™œ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.
  • ์ž๋ฅด๋Š” ๋‹จ์œ„๋ฅผ ๋ฌธ์ž์—ด ๊ธธ์ด์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฅด๋Š” ๋‹จ์œ„๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด ๊ธธ์ด์˜ ์ ˆ๋ฐ˜๊นŒ์ง€ ์„ค์ •ํ•œ๋‹ค.

2. ์ž๋ฅธ ๋‹จ์œ„์— ๋งž์ถฐ ๋ฌธ์ž์—ด ์••์ถ•

  • for๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

์ „์ฒด ์ฝ”๋“œ

def solution(s):

    answer = len(s)
    for i in range(1, len(s) // 2 + 1):
        s_list = []
        for j in range(len(s) // i + 1):
            if s[i * j: i * (j + 1)] != '':
                s_list.append(s[i * j: i * (j + 1)])

        temp = s_list[0] # ๋ฐ˜๋ณต๋˜๋Š”์ง€ ํ™•์ธํ•  ๋ฌธ์ž
        temp_str = "" # ๊ธธ์ด ์ธก์ •์„ ์œ„ํ•œ ์••์ถ•๋œ ๋ฌธ์ž์—ด
        count = 1# ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณตํ•˜๋Š” ํšŸ์ˆ˜

        for k in range(1, len(s_list)):
            if temp == s_list[k]: 
                count += 1
            else:
                if count > 1:
                    temp_str += str(count)
                temp_str += temp
                temp = s_list[k]
                count = 1

        if count > 1:
            temp_str += str(count)
        temp_str += temp

        answer = min(answer, len(temp_str))

    return answer

์ฝ”๋“œ ์„ค๋ช…

answer = len(s)

for i in range(1, len(s) // 2 + 1):

๋จผ์ € ์–ด๋–ป๊ฒŒ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ๋„ ์••์ถ•๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ answer์— ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

์ดํ›„ ๋ฌธ์ž์—ด์„ 1๊ฐœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์˜ ์ ˆ๋ฐ˜ ๊ธธ์ด(len(s) // 2)๊นŒ์ง€ ์˜ ๋‹จ์œ„๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•ด๋ณด๋ฉด ๋œ๋‹ค.

 

s_list = []
for j in range(len(s) // i + 1):
    if s[i * j: i * (j + 1)] != '':
        s_list.append(s[i * j: i * (j + 1)])

๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๊ธฐ ์ „์— ์ฃผ์–ด์ง„ ๋‹จ์œ„(i)๋กœ ๋ฌธ์ž์—ด์„ slicing ํ•ด์ค€๋‹ค.

๋จผ์ € slicing ๋œ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด s_list๋ฅผ ์„ ์–ธํ•ด์ฃผ๊ณ , ์ž๋ฅธ ๋ฌธ์ž์—ด์„ s_list์— ์ฐจ๋ก€๋Œ€๋กœ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

temp = s_list[0] # ๋ฐ˜๋ณต๋˜๋Š”์ง€ ํ™•์ธํ•  ๋ฌธ์ž
temp_str = "" # ๊ธธ์ด ์ธก์ •์„ ์œ„ํ•œ ์••์ถ•๋œ ๋ฌธ์ž์—ด
count = 1# ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณตํ•˜๋Š” ํšŸ์ˆ˜

for k in range(1, len(s_list)):
    if temp == s_list[k]:
        count += 1
    else:
        if count > 1:
            temp_str += str(count)
        temp_str += temp
        temp = s_list[k]
        count = 1

if count > 1:
    temp_str += str(count)
temp_str += temp

answer = min(answer, len(temp_str))

 

์ด์ œ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•ด ํ‘œํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

 

๋น„๊ตํ•  ๋‹จ์œ„ ๋ฌธ์ž์—ด์„ temp์— ์ €์žฅํ•˜๊ณ  s_list์— ์žˆ๋Š” ์›์†Œ๋“ค๊ณผ ๋น„๊ตํ•ด๋ณด๋ฉด ๋œ๋‹ค.

 

๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฐ˜๋ณต๋œ ํšŸ์ˆ˜(count)๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ   

๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ์ž„์‹œ๋กœ ๋งŒ๋“  ์••์ถ• ๋ฌธ์ž์—ด(temp_str)์— count๋ž‘ temp๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

count๊ฐ€ 1์ธ ๊ฒฝ์šฐ(=๋ฐ˜๋ณต๋œ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ) 1์€ ์ƒ๋žตํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ if๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

 

์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด(s)์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋„ ๋ถ™์—ฌ์ค˜์•ผ ํ•˜๋ฏ€๋กœ for๋ฌธ์ด ๋๋‚œ ์ดํ›„, ๋‚จ์€ ๋ฌธ์ž(temp)๋„ count์™€ ํ•จ๊ป˜ ๋ถ™์—ฌ์ค€๋‹ค.

 

์••์ถ•์ด ๋‹ค ๋๋‚˜๋ฉด ๊ธฐ์กด์— ์žˆ๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•ด ์ž‘์€ ๊ฐ’์„ answer์— ์ €์žฅํ•ด์ค€๋‹ค.

์ €์ž‘์žํ‘œ์‹œ

'๐Ÿงฉ Problem Solving > [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42626 ๋” ๋งต๊ฒŒ (python ํŒŒ์ด์ฌ)  (0) 2023.08.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42746 ๊ฐ€์žฅ ํฐ ์ˆ˜ (python ํŒŒ์ด์ฌ)  (0) 2023.08.25
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42576 ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ (+๋”•์…”๋„ˆ๋ฆฌ get) (python ํŒŒ์ด์ฌ)  (0) 2023.08.24
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42862 ์ฒด์œก๋ณต (python ํŒŒ์ด์ฌ)  (0) 2023.08.24
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 118666 ์„ฑ๊ฒฉ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๊ธฐ (python ํŒŒ์ด์ฌ)  (0) 2022.12.12
'๐Ÿงฉ Problem Solving/[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42746 ๊ฐ€์žฅ ํฐ ์ˆ˜ (python ํŒŒ์ด์ฌ)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42576 ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ (+๋”•์…”๋„ˆ๋ฆฌ get) (python ํŒŒ์ด์ฌ)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42862 ์ฒด์œก๋ณต (python ํŒŒ์ด์ฌ)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 118666 ์„ฑ๊ฒฉ ์œ ํ˜• ๊ฒ€์‚ฌํ•˜๊ธฐ (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (106)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (4)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (4)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    boj
    ์Šคํƒ
    BFS
    ์œ„์ƒ์ •๋ ฌ
    imos
    Bruteforce
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    SWEA
    ๋ถ„ํ•  ์ •๋ณต
    Python
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํˆฌํฌ์ธํ„ฐ
    ์žฌ๊ท€
    ํŒŒ์ด์ฌ
    ๋ฐ๋ธŒ์ฝ”์Šค
    ๋ฐฑ์ค€
    DFS
    DP
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    ๊ทธ๋ฆฌ๋””
    ๋ƒ…์ƒ‰
    ๊ตฌํ˜„
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๋ˆ„์ ํ•ฉ
    slicing
    ์ •์ฒ˜๊ธฐ
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ๋ถ€๋ถ„ํ•ฉ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 60057 ๋ฌธ์ž์—ด ์••์ถ• (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

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