Algorithm/Programmers

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ (level.1)

감자 πŸ₯” 2021. 9. 3. 16:32
λ°˜μ‘ν˜•

 

문제링크

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

 

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

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

programmers.co.kr

 

λ‚˜μ˜ 풀이

def solution(left, right):
    newlist = []
    for num in range(left, right+1):
        ylist = [] #num이 λ°”λ€”λ•Œλ§ˆλ‹€ μ΄ˆκΈ°ν™”
        for i in range(1, num+1):
            if num % i == 0:
                ylist.append(i)
        if len(ylist) % 2 == 0: #짝수개면
            newlist.append(num)
        else:
            newlist.append(num*(-1))
    return int(sum(newlist))

 

λ‹€λ₯Έμ‚¬λžŒν’€μ΄

https://programmers.co.kr/learn/courses/30/lessons/77884/solution_groups?language=python3&type=all 

ν•¨κ»˜ μŠ€ν„°λ””ν•˜λŠ” μ˜€λΉ λž‘ 풀이가 μ™„μ „ λ˜‘κ°™λ‹€ γ…‹γ…‹γ…‹γ…‹ μ‚¬λžŒλ“€μ€ λ‹€ μƒκ°ν•˜λŠ”κ²Œ λΉ„μŠ·ν•œκ²ƒ κ°™λ‹€.
λ‹€λ₯Έμ‚¬λžŒν’€μ΄μ—μ„œ μ’‹μ•„μš”μˆ˜κ°€ κ°€μž₯ λ§Žμ€ 것은 μ•„λž˜ μ½”λ“œμ˜€λ‹€. 와케짧고 간단해!

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

제곱수의 μ•½μˆ˜μ˜ κ°―μˆ˜λŠ” ν™€μˆ˜, λΌλŠ” 점을 μ΄μš©ν•΄μ„œ ν’€μ—ˆλ‹€κ³  ν•œλ‹€. 이제 μƒκ°ν•΄λ³΄λ‹ˆκΉŒ μ•½μˆ˜λŠ” 정말 λͺ¨λ‘ μ§μˆ˜μ΄μ§€λ§Œ 제곱수만 μ•½μˆ˜κ°€ ν™€μˆ˜μž„μ„ μ•Œμˆ˜μžˆλ‹€. (4, 9, 16 λ“±) μ•½μˆ˜μ˜ μ„Έκ³„λŠ” νŒŒκ³ λ“€λ©΄ 정말 μˆ˜λ§Žμ€ 아이디어가 μžˆλŠ” 것같닀. 많이 곡뢀해야겠닀!

λ°˜μ‘ν˜•