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

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level 1(μ‹€νŒ¨μœ¨) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level 1(μ‹€νŒ¨μœ¨)

γ…… γ…œ γ…” γ…‡ 2022. 10. 26. 21:57
728x90

1. 문제 μ„€λͺ…

슈퍼 κ²Œμž„ κ°œλ°œμž μ˜€λ λ¦¬λŠ” ν° κ³ λ―Όμ— λΉ μ‘Œλ‹€. κ·Έλ…€κ°€ λ§Œλ“  ν”„λžœμ¦ˆ μ˜€μ²œμ„±μ΄ λŒ€μ„±κ³΅μ„ κ±°λ’€μ§€λ§Œ, μš”μ¦˜ μ‹ κ·œ μ‚¬μš©μžμ˜ μˆ˜κ°€ κΈ‰κ°ν•œ κ²ƒμ΄λ‹€. μ›μΈμ€ μ‹ κ·œ μ‚¬μš©μžμ™€ κΈ°μ‘΄ μ‚¬μš©μž μ‚¬μ΄μ— μŠ€ν…Œμ΄μ§€ μ°¨μ΄κ°€ λ„ˆλ¬΄ ν° κ²ƒμ΄ λ¬Έμ œμ˜€λ‹€.

이 λ¬Έμ œλ₯Ό μ–΄λ–»κ²Œ ν• κΉŒ κ³ λ―Ό ν•œ κ·Έλ…€λŠ” λ™μ μœΌλ‘œ κ²Œμž„ μ‹œκ°„을 λŠ˜λ €μ„œ λ‚œμ΄λ„λ₯Ό μ‘°μ ˆν•˜κΈ°λ‘œ ν–ˆλ‹€. μ—­μ‹œ μŠˆνΌ κ°œλ°œμžλΌ λŒ€λΆ€λΆ„μ˜ λ‘œμ§μ€ μ‰½κ²Œ κ΅¬ν˜„ν–ˆμ§€λ§Œ, μ‹€νŒ¨μœ¨μ„ κ΅¬ν•˜λŠ” λΆ€λΆ„μ—μ„œ μœ„기에 λΉ μ§€κ³  λ§μ•˜λ‹€. μ˜€λ λ¦¬λ₯Ό μœ„ν•΄ μ‹€νŒ¨μœ¨μ„ κ΅¬ν•˜λŠ” μ½”λ“œλ₯Ό μ™„μ„±ν•˜λΌ.

μ‹€νŒ¨μœ¨μ€ λ‹€μŒκ³Ό κ°™μ΄ μ •μ˜ν•œλ‹€.
μŠ€ν…Œμ΄μ§€μ— λ„λ‹¬ν–ˆμœΌλ‚˜ μ•„직 ν΄λ¦¬μ–΄ν•˜μ§€ λͺ»ν•œ ν”Œλ ˆμ΄μ–΄μ˜ μˆ˜ / μŠ€ν…Œμ΄μ§€μ— λ„λ‹¬ν•œ ν”Œλ ˆμ΄μ–΄ μˆ˜
전체 μŠ€ν…Œμ΄μ§€μ˜ κ°œμˆ˜ N, κ²Œμž„을 μ΄μš©ν•˜λŠ” μ‚¬μš©μžκ°€ ν˜„μž¬ λ©ˆμΆ°μžˆλŠ” μŠ€ν…Œμ΄μ§€μ˜ λ²ˆν˜Έκ°€ λ‹΄κΈ΄ λ°°μ—΄ stagesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ‹€νŒ¨μœ¨μ΄ λ†’은 μŠ€ν…Œμ΄μ§€λΆ€ν„° λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μŠ€ν…Œμ΄μ§€μ˜ λ²ˆν˜Έκ°€ λ‹΄κ²¨μžˆλŠ” λ°°μ—΄μ„ return ν•˜λ„둝 solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜λΌ.

 

 

 

2. μ œν•œ 사항

  • μŠ€ν…Œμ΄μ§€μ˜ 개수 N은 1 μ΄μƒ 500 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.
  • stages의 κΈΈμ΄λŠ” 1 μ΄μƒ 200,000 μ΄ν•˜μ΄λ‹€.
  • stagesμ—λŠ” 1 μ΄μƒ N + 1 μ΄ν•˜μ˜ μžμ—°μˆ˜κ°€ λ‹΄κ²¨μžˆλ‹€.
    • 각 μžμ—°μˆ˜λŠ” μ‚¬μš©μžκ°€ ν˜„μž¬ 도전 쀑인 μŠ€ν…Œμ΄μ§€μ˜ 번호λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
    • 단, N + 1 μ€ λ§ˆμ§€λ§‰ μŠ€ν…Œμ΄μ§€(N 번째 μŠ€ν…Œμ΄μ§€) κΉŒμ§€ 클리어 ν•œ μ‚¬μš©μžλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
  • λ§Œμ•½ μ‹€νŒ¨μœ¨μ΄ 같은 μŠ€ν…Œμ΄μ§€κ°€ μžˆλ‹€λ©΄ μž‘μ€ 번호의 μŠ€ν…Œμ΄μ§€κ°€ λ¨Όμ € μ˜€λ„λ‘ ν•˜λ©΄ λœλ‹€.
  • μŠ€ν…Œμ΄μ§€μ— λ„λ‹¬ν•œ μœ μ €κ°€ μ—†λŠ” 경우 ν•΄λ‹Ή μŠ€ν…Œμ΄μ§€μ˜ μ‹€νŒ¨μœ¨μ€ 0 μœΌλ‘œ μ •μ˜ν•œλ‹€.

 

 

 

 

3. λ‚΄ 풀이

- 첫번째 μ‹œλ„ (정확도 : 70.4)

def solution(N, stages):
    answer = []    
    for i in range(1,N+1):
        answer.append([i,stages.count(i) / len(stages)])
        stages = [x for x in stages if x!=i]

    answer.sort(key = lambda a:a[1],reverse=True)
    return [x[0] for x in answer]

 

1. 1λΆ€ν„° NκΉŒμ§€ for문을 μ‚¬μš©ν•˜μ—¬ i개의 개수 / 전체 μ‚¬μš©μž 수 계산 ν›„ answer에 μΆ”κ°€ ν›„  i와 같은 숫자 λ¦¬μŠ€νŠΈμ—μ„œ μ‚­μ œ

2. λΉ„μœ¨λ‘œ μ •λ ¬ ν›„ 인덱슀 λ°˜ν™˜

 

 

def solution(N, stages):
    answer = []
    stages.sort()
    
    for i in range(1,N+1):
        if i in stages:
            answer.append([i,stages.count(i) / len(stages)])
            stages = [x for x in stages if x!=i]
        else:
            answer.append([i,0])
    answer.sort(key = lambda a:a[1],reverse=True)
    return [x[0] for x in answer]

 

ifλ¬Έ μ‚¬μš©ν•˜μ—¬ iκ°€ λ¦¬μŠ€νŠΈμ— μ‘΄μž¬ν•˜λŠ” κ²½μš°μ—λ§Œ stages의 μš”μ†Œλ₯Ό μ‚­μ œν•˜λŠ” κ²ƒμœΌλ‘œ λ³€κ²½

iκ°€ 리슀트 μ•ˆμ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” 성곡λ₯  0으둜 λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•΄ μ‹œκ°„ 단좕

 

 

 

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

def solution(N, stages):
    result = {}
    denominator = len(stages)
    for stage in range(1, N+1):
        if denominator != 0:
            count = stages.count(stage)
            result[stage] = count / denominator
            denominator -= count
        else:
            result[stage] = 0
    return sorted(result, key=lambda x : result[x], reverse=True)

 

λ‚΄κ°€ ν’€μ΄ν•œ 방식과 λΉ„μŠ·ν•˜μ§€λ§Œ, resultλ₯Ό λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœλ‘œ λ°›μŒ

λ˜ν•œ μ²˜μŒλΆ€ν„° stages의 μ‚¬μš©μž 수λ₯Ό 받은 ν›„ forλ¬Έμ—μ„œ ν•΄λ‹Ήν•˜λŠ” stageμœ μ € 수만큼 λΉΌμ£ΌλŠ” λ°©μ‹μœΌλ‘œ 풀이

 

 

def solution(N, stages):
    fail = {}
    for i in range(1,N+1):
        try:
            fail_ = len([a for a in stages if a==i])/len([a for a in stages if a>=i])
        except:
            fail_ = 0
        fail[i]=fail_
    answer = sorted(fail, key=fail.get, reverse=True)
    return answer

 

try ~ except 문을 μ‚¬μš©ν•˜μ—¬ 풀이

728x90
Comments