π λ¬Έμ μ€λͺ
[λ³Έ λ¬Έμ λ μ νμ±κ³Ό ν¨μ¨μ± ν μ€νΈ κ°κ° μ μκ° μλ λ¬Έμ μ λλ€.]
κ°λ°μ μΆμ μΌλ‘ μΈκ³ μ΅κ³ μ κ°λΆκ° λ μ΄νΌμΉλ μ€νΈλ μ€λ₯Ό λ°μ λλ©΄ μ΄λ₯Ό νκΈ° μν΄ μ€νλΌμΈ 맀μ₯μ μΌνμ νλ¬ κ°κ³€ ν©λλ€.
μ΄νΌμΉλ μΌνμ ν λλ©΄ 맀μ₯ μ§μ΄λμ νΉμ λ²μμ 물건λ€μ λͺ¨λ μΉμΈμ΄ ꡬ맀νλ μ΅κ΄μ΄ μμ΅λλ€.
μ΄λ λ μ€νΈλ μ€λ₯Ό νκΈ° μν΄ λ³΄μ 맀μ₯μ μΌνμ νλ¬ κ° μ΄νΌμΉλ μ΄μ μ²λΌ μ§μ΄λμ νΉμ λ²μμ 보μμ λͺ¨λ ꡬ맀νλ νΉλ³ν μλ λͺ©μ μ λ¬μ±νκ³ μΆμμ΅λλ€.
<μ§μ΄λ λͺ¨λ μ’
λ₯μ 보μμ μ μ΄λ 1κ° μ΄μ ν¬ν¨νλ κ°μ₯ 짧μ ꡬκ°μ μ°Ύμμ ꡬ맀>
μλ₯Ό λ€μ΄ μλ μ§μ΄λλ 4μ’ λ₯μ 보μ(RUBY, DIA, EMERALD, SAPPHIRE) 8κ°κ° μ§μ΄λ μμμ λλ€.
μ§μ΄λμ 3λ²λΆν° 7λ²κΉμ§ 5κ°μ 보μμ ꡬ맀νλ©΄ λͺ¨λ μ’ λ₯μ 보μμ μ μ΄λ νλ μ΄μμ© ν¬ν¨νκ² λ©λλ€.
μ§μ΄λμ 3, 4, 6, 7λ²μ 보μλ§ κ΅¬λ§€νλ κ²μ μ€κ°μ νΉμ ꡬκ°(5λ²)μ΄ λΉ μ§κ² λλ―λ‘ μ΄νΌμΉμ μΌν μ΅κ΄μ λ§μ§ μμ΅λλ€.
μ§μ΄λ λ²νΈ μμλλ‘ λ³΄μλ€μ μ΄λ¦μ΄ μ μ₯λ λ°°μ΄ gemsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ΄λ λͺ¨λ 보μμ νλ μ΄μ ν¬ν¨νλ κ°μ₯ 짧μ ꡬκ°μ μ°Ύμμ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
κ°μ₯ 짧μ ꡬκ°μ μμ μ§μ΄λ λ²νΈμ λ μ§μ΄λ λ²νΈλ₯Ό μ°¨λ‘λλ‘ λ°°μ΄μ λ΄μμ return νλλ‘ νλ©°, λ§μ½ κ°μ₯ 짧μ ꡬκ°μ΄ μ¬λ¬ κ°λΌλ©΄ μμ μ§μ΄λ λ²νΈκ° κ°μ₯ μμ ꡬκ°μ return ν©λλ€.
[μ νμ¬ν]
- gems λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ 100,000 μ΄νμ
λλ€.
- gems λ°°μ΄μ κ° μμλ μ§μ΄λμ λμ΄λ 보μμ λνλ λλ€.
- gems λ°°μ΄μλ 1λ² μ§μ΄λλΆν° μ§μ΄λ λ²νΈ μμλλ‘ λ³΄μμ΄λ¦μ΄ μ°¨λ‘λλ‘ μ μ₯λμ΄ μμ΅λλ€.
- gems λ°°μ΄μ κ° μμλ κΈΈμ΄κ° 1 μ΄μ 10 μ΄νμΈ μνλ²³ λλ¬Έμλ‘λ§ κ΅¬μ±λ λ¬Έμμ΄μ λλ€.
μ μΆλ ₯ μ
["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] | [3, 7] |
["AA", "AB", "AC", "AA", "AC"] | [1, 3] |
["XYZ", "XYZ", "XYZ"] | [1, 1] |
["ZZZ", "YYY", "NNNN", "YYY", "BBB"] | [1, 5] |
μ
μΆλ ₯ μ #1
λ¬Έμ μμμ κ°μ΅λλ€.
μ
μΆλ ₯ μ #2
3μ’
λ₯μ 보μ(AA, AB, AC)μ λͺ¨λ ν¬ν¨νλ κ°μ₯ 짧μ ꡬκ°μ [1, 3], [2, 4]κ° μμ΅λλ€.
μμ μ§μ΄λ λ²νΈκ° λ μμ [1, 3]μ return ν΄μ£Όμ΄μΌ ν©λλ€.
μ
μΆλ ₯ μ #3
1μ’
λ₯μ 보μ(XYZ)μ ν¬ν¨νλ κ°μ₯ 짧μ ꡬκ°μ [1, 1], [2, 2], [3, 3]μ΄ μμ΅λλ€.
μμ μ§μ΄λ λ²νΈκ° κ°μ₯ μμ [1, 1]μ return ν΄μ£Όμ΄μΌ ν©λλ€.
μ
μΆλ ₯ μ #4
4μ’
λ₯μ 보μ(ZZZ, YYY, NNNN, BBB)μ λͺ¨λ ν¬ν¨νλ ꡬκ°μ [1, 5]κ° μ μΌν©λλ€.
κ·Έλ¬λ―λ‘ [1, 5]λ₯Ό return ν΄μ£Όμ΄μΌ ν©λλ€.
π νμ΄ μ½λ
from collections import Counter
def solution(gems):
num = len(set(gems))
result = []
left = 0
counter = Counter()
for right in range(len(gems)):
counter[gems[right]] += 1
right += 1
while len(counter) == num:
counter[gems[left]] -= 1
if counter[gems[left]] == 0:
del counter[gems[left]]
left += 1
result.append([left, right])
return sorted(result, key = lambda x: (x[1]-x[0], x[0]))[0]
ν¬ ν¬μΈν° λ¬Έμ μλ€.
μ°μ λ€μ΄μλ 보μμ Counterμ μ μ₯ν κ²μ΄λ€. Counterμ λ€μ΄μλ ν€μ κ°μλ‘ λ΄κ° ꡬ맀νλ €λ 보μμ μ’ λ₯μ κ°μλ₯Ό νλ¨ν μ μλ€.
μΌμͺ½ ν¬μΈν°λ 0μ λκ³ , forλ¬Έμ ν΅ν΄μ rightλ₯Ό κ³μν΄μ μ΄λνλ€.
right += 1μ indexκ° μλ index+1 κ°μ 리ν΄ν΄μΌ νλ―λ‘ whileλ¬Έ μ μ 미리 ν΄λ κ²μ΄λ€.
μΌμͺ½ ν¬μΈν°λ 0μΌλ‘ κ³ μ ν ν, λͺ¨λ 보μμ ꡬ맀ν μ μμ λκΉμ§ rightλ₯Ό λλ¦°λ€. (forλ¬ΈμΌλ‘ λ리λ κ²)
κ·Έ μ΄νμ μΌμͺ½ ν¬μΈν°μ 보μμ νλ μΉ΄μ΄ν°μμ μ κ±°νκ³ , κ°―μκ° 0μ΄ λλ€λ©΄ μμ μ’ λ₯ μμ μΉ΄μ΄ν°μμ μ νλ€.
κ·Έ ν leftλ₯Ό ν μΉΈ μ΄λ(index + 1 ννλ λμμ)νλλ°, μ΄κ²μ μΌμͺ½ ν¬μΈν°κ° μ΄λν΄λ μΉ΄μ΄ν° λ΄μ 보μ μ’ λ₯μ μ λ³νκ° μμ λκΉμ§ λ°λ³΅νλ€.
μ΄ νμλ λ 짧μ λ²μκ° μ‘΄μ¬ν μ μμΌλ―λ‘, κ³μν΄μ rightμ λν forλ¬Έμ μ§ννλ€.
λ μ μλ νλ³΄κ° μ μ₯λ result λ°°μ΄μ λν΄ λ²μ κ°(x[1]-x[0])μΌλ‘ μ°μ μ λ ¬νκ³ , κ·Έ ν μμ κ°κΉμ΄ λ²μλ₯Ό κ·Έ λ€μ μ λ ¬νλ€.
κ°μ₯ μμ κ°μ 리ν΄νλ©΄ μ λ΅μ΄λ€.
ν¬ ν¬μΈν° λ¬Έμ μ΄μ§λ§, left λ¨Όμ μ΄λνκ³ , right λ€μ μ΄λμν€λ λ¬Έμ λ€λ³΄λ€λ μκ°νλλ° μ΄λ €μμ΄ μλ€.
μ΅μν΄μ§λ©΄ λ€λ₯Έ λ¬Έμ ν λμλ μ μ©ν κ² κ°λ€. μμ§ν΄λμ.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] κ΄νΈ λ³ν (level2, python) (0) | 2022.10.11 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] λ§€λ΄ λ¦¬λ΄μΌ (level2, python) (0) | 2022.10.10 |
[νλ‘κ·Έλλ¨Έμ€] λΆλ μ¬μ©μ (level3, python) (0) | 2022.09.27 |
[νλ‘κ·Έλλ¨Έμ€] μΌκ° λ¬ν½μ΄ (level2, python) (0) | 2022.09.26 |
[νλ‘κ·Έλλ¨Έμ€] κΈ°μ§κ΅ μ€μΉ (level3, python) (1) | 2022.09.25 |