πŸ“Œ 파이썬 μœΌλ‘œ 풀이

 

πŸ“Œ λ¬Έμ œ 링크 :

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

πŸ“Œ λ¬Έμ œ μ„€λͺ… :

λ¬Έμžμ—΄ sκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, s의 각 μœ„μΉ˜λ§ˆλ‹€ μžμ‹ λ³΄λ‹€ μ•žμ— λ‚˜μ™”μœΌλ©΄μ„œ, μžμ‹ κ³Ό κ°€μž₯ κ°€κΉŒμš΄ 곳에 μžˆλŠ” 같은 κΈ€μžκ°€ μ–΄λ”” μžˆλŠ”μ§€ μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, s="banana"라고 ν•  λ•Œ,  각 κΈ€μžλ“€μ„ μ™Όμͺ½λΆ€ν„° 였λ₯Έμͺ½μœΌλ‘œ 읽어 λ‚˜κ°€λ©΄μ„œ λ‹€μŒκ³Ό 같이 μ§„ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • bλŠ” 처음 λ‚˜μ™”κΈ° λ•Œλ¬Έμ— μžμ‹ μ˜ μ•žμ— 같은 κΈ€μžκ°€ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŠ” -1둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • aλŠ” 처음 λ‚˜μ™”κΈ° λ•Œλ¬Έμ— μžμ‹ μ˜ μ•žμ— 같은 κΈ€μžκ°€ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŠ” -1둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • n은 처음 λ‚˜μ™”κΈ° λ•Œλ¬Έμ— μžμ‹ μ˜ μ•žμ— 같은 κΈ€μžκ°€ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŠ” -1둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • aλŠ” μžμ‹ λ³΄λ‹€ 두 μΉΈ μ•žμ— aκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 2둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • n도 μžμ‹ λ³΄λ‹€ 두 μΉΈ μ•žμ— n이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 2둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • aλŠ” μžμ‹ λ³΄λ‹€ 두 μΉΈ, λ„€ μΉΈ μ•žμ— aκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 쀑 κ°€κΉŒμš΄ 것은 두 μΉΈ μ•žμ΄κ³ , μ΄λŠ” 2둜 ν‘œν˜„ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μ΅œμ’… 결과물은 [-1, -1, -1, 2, 2, 2]κ°€ λ©λ‹ˆλ‹€.

λ¬Έμžμ—΄ s이 μ£Όμ–΄μ§ˆ λ•Œ, μœ„μ™€ 같이 μ •μ˜λœ 연산을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜ solution을 μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

πŸ“Œ μ œν•œ 사항

  • 1 ≤ s의 길이 ≤ 10,000
    • s은 μ˜μ–΄ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ“Œ μž…μΆœλ ₯ 예


μΆ”μΈ‘ μ˜μ‚¬μ½”λ“œ) 

1) 방법

1. 전체 λ¬Έμžμ—΄μ„ 잘라 배열을 λ§Œλ“ λ‹€

2. for문을 전체 λ¬Έμžμ—΄μ„ λŒλ¦°λ‹€.

3. 인덱슀 μ΄μ „μ˜ 길이 값을 κ΅¬ν•œλ‹€.

4. κ°€μž₯ κ°€κΉŒμš΄ κ°’μ˜ 인덱슀λ₯Ό μ €μž₯ν•  λ³€μˆ˜same_Idxλ₯Ό μ •μ˜ν•œλ‹€.

5. 길이 값을 -2ν•˜μ—¬ 0λΆ€ν„° μ§€κΈˆ 인덱슀 μ „κΉŒμ§€ for문을 돌렀 ν˜„μž¬ μΈλ±μŠ€μ™€ λ™μΌν•œ λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰ 인덱슀λ₯Ό λ°›μ•„ same_Idx에 μ €μž₯ν•œλ‹€.

6. λ§Œμ•½ λ™μΌν•œ λ¬Έμžμ—΄μ΄ μ—†λ‹€λ©΄ same_Idx에 -1 μ €μž₯ν•œλ‹€. 

6. for문을 λ‚˜μ™€ λ§Œμ•½ same_Idx = -1

   - 이라면 : λ°˜ν™˜ν•  λ¦¬μŠ€νŠΈμ— -1을 μ €μž₯

   - μ•„λ‹ˆλΌλ©΄ : ν˜„μž¬ μΈλ±μŠ€μ—μ„œ λ™μΌν•œ λ¬Έμžμ—΄ 인덱슀λ₯Ό λΊ„μ…ˆν•˜μ—¬ κ·Έ 값을 λ¦¬μŠ€νŠΈμ— μ €μž₯

7. for문을 λ‚˜μ™€ μ €μž₯된 리슀트λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

μ†ŒμŠ€μ½”λ“œ) 

* 1μ°¨) μ‹€νŒ¨ : μ •ν™•μ„± 10

def solution(s):

    answer_List = []

    for i in range(0,len(s)):
        same_Idx = 0;
        if i == 0:
            answer_List.append(-1)
            continue
            
        for x in range(0,i):
            if s[i] == s[x]:
                same_Idx = x;

        if same_Idx == 0 :
            answer_List.append(-1)
        else :
            answer_List.append(i-same_Idx)

    return answer_List

* 2μ°¨) 성곡 : λ©”λͺ¨λ¦¬: 11 MB, μ‹œκ°„: 3600.46 ms 

def solution(s):

    answer_List = []
    for i in range(0, len(s)):
        same_Idx = 0
        cnt = 0
        if i == 0:
            answer_List.append(-1)
            continue
            
        for x in range(0, i):
            if s[i] == s[x]:
                cnt += 1
                same_Idx = x

        if same_Idx == 0 and cnt == 0:
            answer_List.append(-1)
        else:
            answer_List.append(i - same_Idx)

    return answer_List

 

 

리뷰) 

1μ°¨μ—μ„œ λ™μΌν•œ λ¬Έμžμ—΄μ΄ 인덱슀λ₯Ό κΈ°λ³Έ 0으둜 μž‘μ•„μ£Όκ³  μžˆμ–΄μ„œ λ™μΌν•œ λ¬Έμžμ—΄ μΈλ±μŠ€κ°€ 0μΌλ•Œλž‘ λ™μΌν•œ λ¬Έμžμ—΄μ΄ 없을 λ•Œλ₯Ό ꡬ뢄 λͺ»ν•¨. 그것을 μˆ˜μ •ν•΄μ£Όλ‹ˆ 성곡.

근데 ν…ŒμŠ€νŠΈ 5,7,9,11,30 이 3000ms 이상이 λ‚˜μ˜¨λ‹€. 더 κ°œμ„ ν•΄λ΄μ•Όκ² λ‹€. 

+ Recent posts