๐Ÿงฉ Algorithm/[Programmers] Level 1

Programmers ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ (Python/Level 1)

devCloud 2022. 7. 27. 16:56
728x90
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œ

๋‘ ์ •์ˆ˜ left์™€ right๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. left๋ถ€ํ„ฐ right๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋“ค ์ค‘์—์„œ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ์ˆ˜๋Š” ๋”ํ•˜๊ณ , ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ์ˆ˜๋Š” ๋บ€ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ left ≤ right ≤ 1,000

์ž…์ถœ๋ ฅ ์˜ˆ

left right result
13 17 43
24 27 52

๋ฌธ์ œ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1  - ๋‹ค์Œ ํ‘œ๋Š” 13๋ถ€ํ„ฐ 17๊นŒ์ง€์˜ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ˆ˜ ์•ฝ์ˆ˜  ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜
13 1, 13 2
14 1, 2, 7, 14 4
15 1, 3, 5, 15 4
16 1, 2, 4, 8, 16 5
17 1, 17 2

๋”ฐ๋ผ์„œ, 13 + 14 + 15 - 16 + 17 = 43์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ’€์ด

  1. left๋ถ€ํ„ฐ right๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  2. ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  3. i์ผ ๋•Œ, ํ•ด๋‹น ์ˆ˜์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด 1๋ถ€ํ„ฐ i๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์ž‘์„ฑํ•œ๋‹ค.
  4. ์•ฝ์ˆ˜๊ฐ€ ๋งž์œผ๋ฉด ์นด์šดํŠธ ํ•œ๋‹ค.
  5. ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜ ์นด์šดํŠธ๊ฐ€ ๋๋‚ฌ์œผ๋ฉด ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ์ง€ ํ™€์ˆ˜์ธ์ง€ ํŒ๋‹จํ•˜๊ณ  answer์— i๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ€๋‹ค.
  6. ๋‹ค์Œ, left์˜ ๋‹ค์Œ ์ˆ˜๋„ ์œ„์™€ ๋˜‘๊ฐ™์ด ๋ฐ˜๋ณตํ•œ๋‹ค. 

Solution

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
        if cnt % 2 == 0:
            answer += i
        else:
            answer -= i
    return answer

Another Solution

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
728x90