๐Ÿ“Œ ํŒŒ์ด์ฌ ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

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

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

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

์ˆซ์ž๋‚˜๋ผ ๊ธฐ์‚ฌ๋‹จ์˜ ๊ฐ ๊ธฐ์‚ฌ์—๊ฒŒ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ number๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ๋“ค์€ ๋ฌด๊ธฐ์ ์—์„œ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๊ธฐ์‚ฌ๋Š” ์ž์‹ ์˜ ๊ธฐ์‚ฌ ๋ฒˆํ˜ธ์˜ ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์— ์˜ํ•ด ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ •ํ•˜๊ณ , ์ œํ•œ์ˆ˜์น˜๋ณด๋‹ค ํฐ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์‚ฌ๋Š” ํ˜‘์•ฝ๊ธฐ๊ด€์—์„œ ์ •ํ•œ ๊ณต๊ฒฉ๋ ฅ์„ ๊ฐ€์ง€๋Š” ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 15๋ฒˆ์œผ๋กœ ์ง€์ •๋œ ๊ธฐ์‚ฌ๋‹จ์›์€ 15์˜ ์•ฝ์ˆ˜๊ฐ€ 1, 3, 5, 15๋กœ 4๊ฐœ ์ด๋ฏ€๋กœ, ๊ณต๊ฒฉ๋ ฅ์ด 4์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์ด์›ƒ๋‚˜๋ผ์™€์˜ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๊ฐ€ 3์ด๊ณ  ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์ด 2๋ผ๋ฉด, 15๋ฒˆ์œผ๋กœ ์ง€์ •๋œ ๊ธฐ์‚ฌ๋‹จ์›์€ ๋ฌด๊ธฐ์ ์—์„œ ๊ณต๊ฒฉ๋ ฅ์ด 2์ธ ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๊ธฐ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ 1๋‹น 1kg์˜ ์ฒ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด๊ธฐ์ ์—์„œ ๋ฌด๊ธฐ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒ ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ๋‹จ์›์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ number์™€ ์ด์›ƒ๋‚˜๋ผ์™€ ํ˜‘์•ฝ์œผ๋กœ ์ •ํ•ด์ง„ ๊ณต๊ฒฉ๋ ฅ์˜ ์ œํ•œ์ˆ˜์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ limit์™€ ์ œํ•œ์ˆ˜์น˜๋ฅผ ์ดˆ๊ณผํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฌด๊ธฐ์˜ ๊ณต๊ฒฉ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ power๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌด๊ธฐ์ ์˜ ์ฃผ์ธ์ด ๋ฌด๊ธฐ๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฒ ์˜ ๋ฌด๊ฒŒ๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ number ≤ 100,000
  • 2 ≤ limit ≤ 100
  • 1 ≤ power  limit

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ


์ถ”์ธก) 

1. result๋ณ€์ˆ˜์™€ cnt๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. 

1. number๋งŒํผ์˜ for๋ฌธ(1)์„ ๋Œ๋ฆฐ๋‹ค.

2. ๊ฐ ์ˆซ์ži๋งˆ๋‹ค ์ˆซ์ž๊ธธ์ด ๋งŒํผ for๋ฌธ(2)๋ฅผ ๋Œ๋ฆฐ๋‹ค

3. i๋ฅผ for๋ฌธ(2) ๋Œ๋ฆด๋•Œ๋งˆ๋‹ค์˜ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ๋‚˜๋ˆ„์–ด 0์ด ๋‚˜์˜ค๋ฉด cnt += 1 ์‹œํ‚จ๋‹ค.

4. for๋ฌธ(2)์„ ๋‚˜์™€ cnt๊ฐ€ limit๋ณด๋‹ค

    - ํฌ๋ฉด power๊ฐ’์„ result ๊ฐ’์— ๋”ํ•œ๋‹ค. 

    - ํฌ์ง€ ์•Š๋‹ค๋ฉด cnt๋ฅผ result ๊ฐ’์— ๋”ํ•œ๋‹ค.

5. for๋ฌธ(1)์„ ๋‚˜์™€ result ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) ์‹คํŒจ : 55.6์  (์‹œ๊ฐ„์ดˆ๊ณผ ์‹คํŒจ๋„ ์žˆ์Œ)

import math
def solution(number, limit, power):
    result = 0
    cnt = 0
    for i in range(1, number+1):
        if i == 1:
            cnt += 1
            continue

        for x in range(1, i+1):
            if i%x == 0:
                cnt += 1

        if cnt > limit:
            result += power
            cnt = 0
        else:
            result += cnt
            cnt = 0

    return result

* 2์ฐจ) ์‹คํŒจ : 85.2์  ( ์‹œ๊ฐ„ ์ค„์ด๋Š”๋ฐ ์„ฑ๊ณต์œผ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ ์‹คํŒจ๋Š” ์‚ฌ๋ผ์ง) : 17, 18, 21, 22

import math
def solution(number, limit, power):
    result = 0
    cnt = 0
    for i in range(1, number+1):
        if i == 1:
            cnt += 1
            continue

        for x in range(1, int(math.sqrt(i))+1):
            if i%x == 0:
                cnt += 1
                if x*x != i:
                    cnt += 1

        if cnt > limit:
            result += power
            cnt = 0
        else:
            result += cnt
            cnt = 0

    return result

* 3์ฐจ) ์„ฑ๊ณต : ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ–ˆ๋”๋‹ˆ ์„ฑ๊ณต (๊ทผ๋ฐ ์™œ???? ์™œ ์ €๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฌ์ง€)

import math
def solution(number, limit, power):
    result = 0
    cnt = 0
    
    for i in range(1, number+1):
        for x in range(1, int(math.sqrt(i))+1):
            if i%x == 0:
                cnt += 1
                if x*x != i:
                    cnt += 1

        if cnt > limit:
            result += power
            cnt = 0
        else:
            result += cnt
            cnt = 0

    return result

๋ฌธ์ œ์  ์ธ์ง€: 1์ผ๋•Œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ํ†ต๊ณผ๋ฅผ ๋ชปํ–ˆ๋˜ ๊ฒƒ 

import math
def solution(number, limit, power):
    result = 0
    cnt = 0
    for i in range(1, number+1):
        if i == 1:
            result = 1
            continue

        for x in range(1, int(math.sqrt(i))+1):
            if i%x == 0:
                cnt += 1
                if x*x != i:
                    cnt += 1

        if cnt > limit:
            result += power
            cnt = 0
        else:
            result += cnt
            cnt = 0

    return result

 

 

๋ฆฌ๋ทฐ) 

์•ฝ์ˆ˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ.

์•ฝ์ˆ˜์—์„œ ๊ทธ ์ž์ฒด ์ˆ˜x๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ฐ€์žฅ ํฐ์ˆ˜๋Š” ์ œ๊ณฑ๊ทผ์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ž˜์„œ for๋ฌธ์„ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋กœ ๋Œ๋ ค x๋ฅผ ๋‚˜๋ˆด์„๋•Œ 0์ธ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ์ด ์ˆซ์ž๋“ค์€ ๊ฐ์ž ์ง์ด ๋˜๋Š” ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ”๋กœ +1 ํ•œ๋‹ค. ๋‹ค๋งŒ, ํ•˜๋‚˜ ์ œ๊ณฑ๊ทผ์€ ๊ทธ ๋™์ผํ•œ ์ˆ˜๋ฅผ ๊ณฑํ•˜์—ฌ x๋ฅผ ๋งŒ๋“œ๋ฏ€๋กœ ์ง์ด ๋˜๋Š” ์ˆ˜๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ๋Š” +1๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๊ทผ๋ฐ ์˜๋ฌธ์ธ๊ฒŒ 3์ฐจ ์„ฑ๊ณต ๋ถ€๋ถ„์—์„œ ์ €๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ ๊ฑฐ๋ž€ ์ƒ๊ฐ์€ ๋ชปํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๊ฑธ ๋„ฃ์–ด์„œ ์ •๋ฆฌํ•˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ง€์šด๊ฑด๋ฐ ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ๋‹ค.

๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋ฌธ์ œ์˜€๋˜ ๊ฑฐ์ง€ < - ํ•ด๊ฒฐ : 1์ผ๋•Œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ํ†ต๊ณผ๋ฅผ ๋ชปํ–ˆ๋˜ ๊ฒƒ 

+ Recent posts