개발자 HOON
πŸ› HOON DEVLog
개발자 HOON
전체 방문자
였늘
μ–΄μ œ
  • 😎 전체 μΉ΄ν…Œκ³ λ¦¬ (137)
    • πŸ“ μ‹ μž… 인터뷰 μ€€λΉ„ (7)
    • πŸ¦” μ·¨μ—…μ€€λΉ„ 기둝 (7)
    • β˜• μžλ°” : JAVA (5)
    • 🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS (80)
    • 🌱 λ°±μ—”λ“œ : Backend (13)
    • πŸ§ͺ 컴퓨터과학 : CS (11)
    • πŸ—‚ λ°μ΄ν„°λ² μ΄μŠ€ : DB (1)
    • πŸƒ‍♂️ DEVLOG (8)
    • βš™οΈ Trouble Shooting (5)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • GitHub
  • Resume

곡지사항

인기 κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
개발자 HOON

πŸ› HOON DEVLog

🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ˜μ–΄ λλ§μž‡κΈ° (level2, python)

2022. 9. 8. 18:14

문제 μ„€λͺ…

 

1λΆ€ν„° nκΉŒμ§€ λ²ˆν˜Έκ°€ λΆ™μ–΄μžˆλŠ” nλͺ…μ˜ μ‚¬λžŒμ΄ μ˜μ–΄ λλ§μž‡κΈ°λ₯Ό ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ˜μ–΄ λλ§μž‡κΈ°λŠ” λ‹€μŒκ³Ό 같은 κ·œμΉ™μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

 

  1. 1λ²ˆλΆ€ν„° 번호 μˆœμ„œλŒ€λ‘œ ν•œ μ‚¬λžŒμ”© μ°¨λ‘€λŒ€λ‘œ 단어λ₯Ό λ§ν•©λ‹ˆλ‹€.
  2. λ§ˆμ§€λ§‰ μ‚¬λžŒμ΄ 단어λ₯Ό λ§ν•œ λ‹€μŒμ—λŠ” λ‹€μ‹œ 1λ²ˆλΆ€ν„° μ‹œμž‘ν•©λ‹ˆλ‹€.
  3. μ•žμ‚¬λžŒμ΄ λ§ν•œ λ‹¨μ–΄μ˜ λ§ˆμ§€λ§‰ 문자둜 μ‹œμž‘ν•˜λŠ” 단어λ₯Ό 말해야 ν•©λ‹ˆλ‹€.
  4. 이전에 λ“±μž₯ν–ˆλ˜ λ‹¨μ–΄λŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  5. ν•œ κΈ€μžμΈ λ‹¨μ–΄λŠ” μΈμ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒμ€ 3λͺ…이 λλ§μž‡κΈ°λ₯Ό ν•˜λŠ” 상황을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

tank → kick → know → wheel → land → dream → mother → robot → tank

 

μœ„ λλ§μž‡κΈ°λŠ” λ‹€μŒκ³Ό 같이 μ§„ν–‰λ©λ‹ˆλ‹€.

  • 1번 μ‚¬λžŒμ΄ μžμ‹ μ˜ 첫 번째 차둀에 tankλ₯Ό λ§ν•©λ‹ˆλ‹€.
  • 2번 μ‚¬λžŒμ΄ μžμ‹ μ˜ 첫 번째 차둀에 kick을 λ§ν•©λ‹ˆλ‹€.
  • 3번 μ‚¬λžŒμ΄ μžμ‹ μ˜ 첫 번째 차둀에 knowλ₯Ό λ§ν•©λ‹ˆλ‹€.
  • 1번 μ‚¬λžŒμ΄ μžμ‹ μ˜ 두 번째 차둀에 wheel을 λ§ν•©λ‹ˆλ‹€.
  • (계속 μ§„ν–‰)

 

λλ§μž‡κΈ°λ₯Ό 계속 μ§„ν–‰ν•΄ λ‚˜κ°€λ‹€ 보면, 3번 μ‚¬λžŒμ΄ μžμ‹ μ˜ μ„Έ 번째 차둀에 λ§ν•œ tank λΌλŠ” λ‹¨μ–΄λŠ” 이전에 λ“±μž₯ν–ˆλ˜ λ‹¨μ–΄μ΄λ―€λ‘œ νƒˆλ½ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

μ‚¬λžŒμ˜ 수 nκ³Ό μ‚¬λžŒλ“€μ΄ μˆœμ„œλŒ€λ‘œ λ§ν•œ 단어 words κ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, κ°€μž₯ λ¨Όμ € νƒˆλ½ν•˜λŠ” μ‚¬λžŒμ˜ λ²ˆν˜Έμ™€ κ·Έ μ‚¬λžŒμ΄ μžμ‹ μ˜ λͺ‡ 번째 차둀에 νƒˆλ½ν•˜λŠ”μ§€λ₯Ό κ΅¬ν•΄μ„œ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 


μ œν•œ 사항

 

  • λλ§μž‡κΈ°μ— μ°Έμ—¬ν•˜λŠ” μ‚¬λžŒμ˜ 수 n은 2 이상 10 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • wordsλŠ” λλ§μž‡κΈ°μ— μ‚¬μš©ν•œ 단어듀이 μˆœμ„œλŒ€λ‘œ λ“€μ–΄μžˆλŠ” 배열이며, κΈΈμ΄λŠ” n 이상 100 μ΄ν•˜μž…λ‹ˆλ‹€.
  • λ‹¨μ–΄μ˜ κΈΈμ΄λŠ” 2 이상 50 μ΄ν•˜μž…λ‹ˆλ‹€.
  • λͺ¨λ“  λ‹¨μ–΄λŠ” μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
  • λλ§μž‡κΈ°μ— μ‚¬μš©λ˜λŠ” λ‹¨μ–΄μ˜ 뜻(의미)은 μ‹ κ²½ μ“°μ§€ μ•ŠμœΌμ…”λ„ λ©λ‹ˆλ‹€.
  • 정닡은 [ 번호, μ°¨λ‘€ ] ν˜•νƒœλ‘œ return ν•΄μ£Όμ„Έμš”.
  • λ§Œμ•½ μ£Όμ–΄μ§„ λ‹¨μ–΄λ“€λ‘œ νƒˆλ½μžκ°€ 생기지 μ•ŠλŠ”λ‹€λ©΄, [0, 0]을 return ν•΄μ£Όμ„Έμš”.

μž…μΆœλ ₯ 예
 
n words result
3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3]
5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]
2 ["hello", "one", "even", "never", "now", "world", "draw"] [1,3]

μž…μΆœλ ₯ 예 μ„€λͺ…

 

μž…μΆœλ ₯ 예 #1

3λͺ…μ˜ μ‚¬λžŒμ΄ λλ§μž‡κΈ°μ— μ°Έμ—¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • 1번 μ‚¬λžŒ : tank, wheel, mother
  • 2번 μ‚¬λžŒ : kick, land, robot
  • 3번 μ‚¬λžŒ : know, dream, tank

 

와 같은 μˆœμ„œλ‘œ 말을 ν•˜κ²Œ 되며, 3번 μ‚¬λžŒμ΄ μžμ‹ μ˜ μ„Έ 번째 차둀에 λ§ν•œ tankλΌλŠ” 단어가 1번 μ‚¬λžŒμ΄ μžμ‹ μ˜ 첫 번째 차둀에 λ§ν•œ tank와 κ°™μœΌλ―€λ‘œ 3번 μ‚¬λžŒμ΄ μžμ‹ μ˜ μ„Έ 번째 μ°¨λ‘€λ‘œ 말을 ν•  λ•Œ 처음 νƒˆλ½μžκ°€ λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예 #2

5λͺ…μ˜ μ‚¬λžŒμ΄ λλ§μž‡κΈ°μ— μ°Έμ—¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • 1번 μ‚¬λžŒ : hello, recognize, gather
  • 2번 μ‚¬λžŒ : observe, encourage, refer
  • 3번 μ‚¬λžŒ : effect, ensure, reference
  • 4번 μ‚¬λžŒ : take, establish, estimate
  • 5번 μ‚¬λžŒ : either, hang, executive

 

와 같은 μˆœμ„œλ‘œ 말을 ν•˜κ²Œ 되며, 이 κ²½μš°λŠ” μ£Όμ–΄μ§„ λ‹¨μ–΄λ‘œλ§ŒμœΌλ‘œλŠ” νƒˆλ½μžκ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ [0, 0]을 returnν•˜λ©΄ λ©λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예 #3

2λͺ…μ˜ μ‚¬λžŒμ΄ λλ§μž‡κΈ°μ— μ°Έμ—¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • 1번 μ‚¬λžŒ : hello, even, now, draw
  • 2번 μ‚¬λžŒ : one, never, world

 

와 같은 μˆœμ„œλ‘œ 말을 ν•˜κ²Œ 되며, 1번 μ‚¬λžŒμ΄ μžμ‹ μ˜ μ„Έ 번째 차둀에 'r'둜 μ‹œμž‘ν•˜λŠ” 단어 λŒ€μ‹ , n으둜 μ‹œμž‘ν•˜λŠ” nowλ₯Ό λ§ν–ˆκΈ° λ•Œλ¬Έμ— μ΄λ•Œ 처음 νƒˆλ½μžκ°€ λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.

 

풀이 μ½”λ“œ

def solution(n, words):
    answer = [0, 0]
    already = set()
    
    for idx, w in enumerate(words):
        num = idx % n + 1
        if w in already:
            answer[0] = num
            answer[1] = idx // n + 1
            break
        else:
            if idx == 0:
                already.add(w)
            elif idx != 0 and words[idx-1][-1] == w[0]:
                already.add(w)
            else:
                answer[0] = num
                answer[1] = idx // n + 1
                break
            
    return answer

 

λ‹¨μˆœ κ΅¬ν˜„λ¬Έμ œμ΄λ‹€.

μ‚¬μš©λœ μžλ£Œκ΅¬μ‘°λ‘œλŠ” set을 μ‚¬μš©ν–ˆλŠ”λ°, νŒŒμ΄μ¬μ—μ„œ set은 ν•΄μ‹œ ν…Œμ΄λΈ”λ‘œ λ§Œλ“€μ–΄μ‘ŒμœΌλ©°, setμ—μ„œμ˜ in μ—°μ‚°μ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(1)이닀.

λ”°λΌμ„œ 이미 λ‚˜μ˜¨ 단어에 λŒ€ν•˜μ—¬ μ°ΎλŠ” κ³Όμ •μ˜ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό O(1)둜 쀄일 수 μžˆλ‹€λŠ” 것이닀.

 

κ³ λ €ν•΄μ•Ό ν•  점은,

λλ§μž‡κΈ°λ₯Ό μ‹€νŒ¨ν•œ 경우, 이미 λ‚˜μ˜¨ 단어λ₯Ό λ§ν•œ 경우

이 두 가지에 λŒ€ν•΄ κ³ λ €ν•˜μ—¬ κ΅¬ν˜„ν•˜λ©΄ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

 

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ 동일쑰건 (μƒˆμ°½μ—΄λ¦Ό)

'🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] ꡬλͺ…λ³΄νŠΈ (level2, python)  (0) 2022.09.08
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 짝지어 μ œκ±°ν•˜κΈ° (level2, python)  (0) 2022.09.08
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 카펫 (level2, python)  (0) 2022.09.08
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ‹€μŒ 큰 숫자 (level2, python)  (0) 2022.09.08
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] ν”Όλ³΄λ‚˜μΉ˜ 수 (level2, python)  (0) 2022.09.08
    '🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] ꡬλͺ…λ³΄νŠΈ (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 짝지어 μ œκ±°ν•˜κΈ° (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 카펫 (level2, python)
    • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ‹€μŒ 큰 숫자 (level2, python)
    개발자 HOON
    개발자 HOON
    쒋은 λ°±μ—”λ“œ μ—”μ§€λ‹ˆμ–΄κ°€ 되기 μœ„ν•œ 기둝을 λͺ¨μ•˜μŠ΅λ‹ˆλ‹€. # μ£Όλ‹ˆμ–΄ # λ°±μ—”λ“œ # 개발자

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”