๐Ÿ“Œ ํŒŒ์ด์ฌ ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

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

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

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

๋ฌธ์ž์—ด s๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๋จผ์ € ์ฒซ ๊ธ€์ž๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ž๋ฅผ x๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.
  • ์ด์ œ ์ด ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด๋‚˜๊ฐ€๋ฉด์„œ, x์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž๋“ค์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์…‰๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • s์—์„œ ๋ถ„๋ฆฌํ•œ ๋ฌธ์ž์—ด์„ ๋นผ๊ณ  ๋‚จ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ๋” ์ด์ƒ ์ฝ์„ ๊ธ€์ž๊ฐ€ ์—†๋‹ค๋ฉด, ์—ญ์‹œ ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ๊ณผ์ •๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋“ค๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๋ถ„ํ•ดํ•œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•˜์„ธ์š”.

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ s์˜ ๊ธธ์ด ≤ 10,000
  • s๋Š” ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ

 


์ถ”์ธก) 

1. ์ฒซ๋ฌธ์ž๋ฅผ ์ €์žฅํ•œ ๋ณ€์ˆ˜x๋ฅผ ๋นˆ ๋ฌธ์ž์—ด๋กœ ์„ ์–ธํ•œ๋‹ค.

2. start_Idx๋ฅผ ์„ ์–ธํ•œ๋‹ค. 

2. x ์นด์šดํŠธ์™€ x๊ฐ€ ์•„๋‹Œ ์นด์šดํŠธ๋ฅผ 0์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.

2. ๋ฌธ์ž์—ด ๊ธธ์ด๋งŒํผ for๋ฌธ์„ ๋Œ๋ฆฐ๋‹ค.

2. ๋งŒ์•ฝ ์ฒซ๋ฌธ์ž๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด

   - ์ฒซ๋ฌธ์ž x๋ฅผ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๊ณ , ์ง€๊ธˆ ์ธ๋ฑ์Šค๋ฅผ start_Idx์— ๋Œ€์ž…ํ•œ๋‹ค.

2. ๋งŒ์•ฝ x์™€ ํ˜„์žฌ ๋ฌธ์ž์—ด์ด

   - ๊ฐ™์œผ๋ฉด x ์นด์šดํŠธ๋ฅผ 1 ์˜ฌ๋ฆฐ๋‹ค.

   - ๋‹ค๋ฅด๋ฉด x๊ฐ€ ์•„๋‹Œ ์นด์šดํŠธ๋ฅผ 1์˜ฌ๋ฆฐ๋‹ค.

3. ๋งŒ์•ฝ x์นด์šดํŠธ๊ฐ€ x๊ฐ€ ์•„๋‹Œ ์นด์šดํŠธ์™€ ๊ฐ™์œผ๋ฉด

   - ๋ฆฌ์ŠคํŠธ์— s์˜ ๋ฌธ์ž์—ด์—์„œ start_Idx๋ถ€ํ„ฐ ํ˜„์žฌ Idx๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ ๋„ฃ๋Š”๋‹ค

     ๊ทธ๋ฆฌ๊ณ  start_Idx๋ž‘ x ์นด์šดํŠธ, x๊ฐ€ ์•„๋‹Œ ์นด์šดํŠธ๋ฅผ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

for๋ฌธ์„ ๋‚˜์™€ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) ์‹คํŒจ 

def solution(s):
    x = ""
    start_Idx = 0
    x_Cnt = 0
    x_Not_Cnt = 0
    answer_list = []
    for i in range(0, len(s)):
        if x == "":
            x = s[i]
            start_Idx = i
            x_Cnt += 1
            continue

        if x == s[i]:
            x_Cnt += 1
        else :
            x_Not_Cnt += 1

        if x_Cnt == x_Not_Cnt:
            answer_list.append(s[start_Idx: i+1])
            x_Cnt = 0
            x_Not_Cnt = 0
            x = ""

    return len(answer_list)

* 2์ฐจ) ์„ฑ๊ณต

def solution(s):
    x = ""
    start_Idx = 0
    x_Cnt = 0
    x_Not_Cnt = 0
    answer_list = []
    for i in range(0, len(s)):
        if x == "":
            x = s[i]
            start_Idx = i
            x_Cnt += 1
            continue

        if x == s[i]:
            x_Cnt += 1
        else :
            x_Not_Cnt += 1

        if x_Cnt == x_Not_Cnt:
            answer_list.append(s[start_Idx: i+1])
            x_Cnt = 0
            x_Not_Cnt = 0
            x = ""

    if x_Cnt != 0 or x_Not_Cnt != 0:
        answer_list.append(s[start_Idx: i + 1])

    return len(answer_list)

 

๋ฆฌ๋ทฐ) 

๋ญ”๊ฐ€ ์ค‘๊ฐ„์ค‘๊ฐ„ ์•„์‰ฝ๊ฒŒ ๋†“์น˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ถ€๋ถ„์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฌธ์ œ๋ฅผ ๊ผผ๊ผผํžˆ ์ฝ์–ด์•ผ ๊ฒ ๋‹ค .

๋ฌธ์ œ์„ค๋ช… 4๋ฒˆ์งธ๊บผ๋ฅผ ์ฒ˜์Œ์— ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ๋ชปํ•ด์„œ ์‹คํŒจ! ์ด๋Ÿฐ๊ฑฐ ๋น ๋œจ๋ฆฌ๋ฉด ์•ˆ๋œ๋‹ค๊ณ 

+ Recent posts