250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ˜μ–΄ λλ§μž‡κΈ°) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ˜μ–΄ λλ§μž‡κΈ°)

γ…… γ…œ γ…” γ…‡ 2022. 11. 25. 16:46
728x90

1. 문제 μ„€λͺ…

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 ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

 

 

 

2. μ œν•œ 사항

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

 

 

 

 

3. λ‚΄ 풀이

def solution(n, words):
    answer = [words[0][0]]
    for idx,i in enumerate(words):
        if i not in answer and answer[-1][-1] == i[0]:
            answer.append(i)
        else:
            return [idx%n+1, idx//n+1]
    return [0,0]

1. words 리슀트의 첫번째 κΈ€μžμ˜ 첫 μ•ŒνŒŒλ²³μ„ 리슀트(answer)에 λ‹΄μŒ (index error 방지)

2. for 문을 μ‚¬μš©ν•΄ words 리슀트의 index와 μš”μ†Œ 반볡

3. words리슀트 μš”μ†Œμ˜ 첫번째 μ•ŒνŒŒλ²³μ΄ answerλ¦¬μŠ€νŠΈμ— λ‹΄κΈ΄ λ§ˆμ§€λ§‰ κΈ€μžμ˜ λ§ˆμ§€λ§‰ μ•ŒνŒŒλ²³κ³Ό μΌμΉ˜ν•˜κ³ , answer에 λ‹΄κ²¨μžˆμ§€ μ•ŠμœΌλ©΄ answerλ¦¬μŠ€νŠΈμ— μΆ”κ°€ 

4. λ§Œμ•½ μœ„μ˜ 쑰건 쀑 ν•˜λ‚˜λΌλ„ μΆ©μ‘±ν•˜μ§€ μ•ŠμœΌλ©΄ indexλ₯Ό n으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€μ— +1κ³Ό indexλ₯Ό n으둜 λ‚˜λˆˆ λͺ«μ— +1ν•˜μ—¬ λ°˜ν™˜

5. μœ„μ˜ 쑰건을 λͺ¨λ‘ λ§Œμ‘±ν•˜λ©΄ [0,0] λ°˜ν™˜

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이

def solution(n, words):
    for p in range(1, len(words)):
        if words[p][0] != words[p-1][-1] or words[p] in words[:p]: return [(p%n)+1, (p//n)+1]
    else:
        return [0,0]

 

words 리슀트의 인덱슀λ₯Ό μ‚¬μš©ν•΄ 더 μ‰½κ²Œ 풀이

728x90
Comments