πŸ—οΈ Algorithm/⬛ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[Programmers] [μ›”κ°„ μ½”λ“œ μ±Œλ¦°μ§€ μ‹œμ¦Œ2] [Python] Level1_μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ

Dbswnstjd 2022. 4. 1. 16:57

https://programmers.co.kr/learn/courses/30/lessons/77884

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ

두 μ •μˆ˜ left와 rightκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. leftλΆ€ν„° rightκΉŒμ§€μ˜ λͺ¨λ“  μˆ˜λ“€ μ€‘μ—μ„œ, μ•½μˆ˜μ˜ κ°œμˆ˜κ°€ 짝수인 μˆ˜λŠ” λ”ν•˜κ³ , μ•½μˆ˜μ˜ κ°œμˆ˜κ°€ ν™€μˆ˜μΈ μˆ˜λŠ” λΊ€ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Ό

programmers.co.kr

풀이

# ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1단계 - μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ
def solution(left, right):
    answer = 0
    
    for i in range(left, right+1):
        cnt = 0
        for j in range(1, i+1):
            if i % j == 0:
                cnt += 1
        print(cnt)
        if cnt % 2 == 0:
            answer += i
        else:
            answer -= i
    return answer

i 의 λ²”μœ„λ₯Ό left λΆ€ν„° right κΉŒμ§€ μ„€μ • ν•˜κ³  κ·Έ μ•ˆμ—μ„œ

jκ°€ 1λΆ€ν„° i κΉŒμ§€ 검사 ν›„ μ•½μˆ˜λΌλ©΄ λ‚˜λ¨Έμ§€κ°€ 0 μ΄λ―€λ‘œ 

μ•½μˆ˜μ˜ 개수λ₯Ό μ„ΈλŠ” cnt λ₯Ό 1 더해쀀닀.

cntκ°€ 짝수라면 μ•½μˆ˜μ˜ κ°œμˆ˜κ°€ μ§μˆ˜μ΄λ―€λ‘œ iλ₯Ό 더해주고

cntκ°€ ν™€μˆ˜λΌλ©΄ μ•½μˆ˜μ˜ κ°œμˆ˜κ°€ ν™€μˆ˜μ΄λ―€λ‘œ iλ₯Ό λΉΌμ€€λ‹€.