π νμ΄μ¬ μΌλ‘ νμ΄
π λ¬Έμ λ§ν¬ :
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
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 μ΄μμ΄ λμ¨λ€. λ κ°μ ν΄λ΄μΌκ² λ€.
'Coding Test > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Programmers] λͺ μμ μ λΉ(1) (0) | 2023.01.31 |
|---|---|
| Programmers] λ¬Έμμ΄ λλκΈ° (2) | 2023.01.31 |
| Programmers] ν¬κΈ°κ° μμ λΆλΆ λ¬Έμ (2) | 2023.01.31 |
| Programmers] μ μμΌκ°ν (0) | 2023.01.24 |
| Programmers] λ λ§΅κ² (0) | 2023.01.17 |
