deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž ๋ธ”๋ก
Algorithm Problem/Python

[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž ๋ธ”๋ก

2020. 9. 15. 08:23
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

Lv4

 

๊ตฌ๊ฐ„(begin ~ end)์ด ์ •ํ•ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ์ „๋ถ€๋ฅผ ๊ตฌํ•  ํ•„์š”๋Š” ์—†๋‹ค.

์„ ํƒํ•œ ๊ตฌ๊ฐ„๋งŒ ์ž˜๋ผ์„œ ์—ฌ๊ธฐ์— ์–ด๋–ค ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ• ์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

 

๊ทœ์น™์„ ์ž˜ ์‚ดํŽด๋ณด๋ฉด

I ์˜ ์•ฝ์ˆ˜ ์ค‘( 1 ์ œ์™ธ) ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋ชซ์ด ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด ๋œ๋‹ค.

  • 10์„ ๋ณด๋ฉด 2,5,10 ์ค‘ 2๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ’์€ 5์ด๋‹ค.
  • 9์˜ ๊ฒฝ์šฐ 3,9 ์ค‘ 3์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ’์€ 3์ด๋‹ค.
  • 7์˜ ๊ฒฝ์šฐ ์†Œ์ˆ˜์ด๋ฏ€๋กœ 7๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ’์€ 1์ด๋‹ค.

 

์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด ์ •ํ™•๋„ ํ…Œ์ŠคํŠธ๋Š” ์•„์ฃผ ์‰ฝ๊ฒŒ ํ†ต๊ณผํ•œ๋‹ค.

 

๐Ÿ’ก์ค‘์š”

์ด์ œ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฌธ์ œ์ธ๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๋„ ์•„๋‹ˆ๊ณ  ์‹คํŒจ ๋ผ๊ณ  ํ•œ๋‹ค.์ด์œ ๋Š” ์ „์ฒด ๋„๋กœ์˜ ๊ธธ์ด๋Š” 10^9 ์ด์ง€๋งŒ ๋ธ”๋ก์˜ ์ˆซ์ž๋Š” 10^7 ๊นŒ์ง€์ด๋‹ค.๋ชซ์ด 10^7์„ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค๋ฉด ์‚ฌ์‹ค์ƒ ํ•ด๋‹น๋ธ”๋ก์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค!!๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ชซ์ด 10^7์„ ๋„˜์–ด๊ฐ€๋Š” ์ˆซ์ž๋Š” ์Šคํ‚ตํ•˜๊ณ  ๊ทธ ๋ณด๋‹ค ํฐ ์ˆซ์ž๋กœ ๋‚˜๋ˆ ์„œ 10^7๋ณด๋‹ค ์ž‘์€ ๋ชซ์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

import math


def solution(begin, end):
    answer = []

    for i in range(begin, end + 1):
        if i == 1:  # i == 1์ธ ๊ฒฝ์šฐ๋Š” ๋ฌธ์ œ์—์„œ๋Š” 0์œผ๋กœ ์ฃผ์–ด์ง
            answer.append(0)
        else:
            # ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด
            # ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ˆซ์ž i ์˜ ์ œ๊ณฑ๊ทผ ๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ ๋ณด๊ณ 
            # ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ชซ์„, ์†Œ์ˆ˜์ด๋ฉด 1์„ ๋„ฃ๋Š”๋‹ค.
            sqrt = int(math.sqrt(i))
            for j in range(2, sqrt + 1):
                mok = i // j
                # !!!!์ค‘์š”!!!! - ์ •ํ™•์„ฑ์—์„œ๋Š” ํ†ต๊ณผํ•˜๋‚˜ ํšจ์œจ์„ฑ์—์„œ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Œ
                # ์ „์ฒด ๊ธธ์ด๋Š” 10**9์ด์ง€๋งŒ ๋ธ”๋ก์€ 10**7 ์ด๋‹ค
                # ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ชซ์ด 10**7์„ ๋„˜์–ด๊ฐ€๋ฉด ์•ˆ๋จ!!
                if mok > 10 ** 7:
                    continue
                if i % j == 0:
                    answer.append(mok)
                    break
            else:
                answer.append(1)

    return answer

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

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

๋งํฌ: https://programmers.co.kr/learn/courses/30/lessons/12923

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž ๋ธ”๋ก

1 10 [0, 1, 1, 2, 1, 3, 1, 4, 3, 5]

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

๊ทธ๋ ™์‹œ์—๋Š” 0์œผ๋กœ ๋œ ๋„๋กœ์— ์ˆซ์ž ๋ธ”๋ก์„ ์„ค์น˜ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๋ธ”๋ก์˜ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ธ”๋ก์˜ ๋ฒˆํ˜ธ๊ฐ€ n ์ผ ๋•Œ, ๊ฐ€์žฅ ์ฒ˜์Œ ๋ธ”๋ก์€ n * 2๋ฒˆ์งธ ์œ„์น˜์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ์€ n * 3, ๊ทธ๋‹ค์Œ์€ n * 4, ...๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.๋งŒ์•ฝ ๊ธฐ์กด์— ๋ธ”๋ก์ด ๊น”๋ ค์žˆ๋Š” ์ž๋ฆฌ๋ผ๋ฉด ๊ทธ ๋ธ”๋ก์„๋นผ๊ณ  ์ƒˆ๋กœ์šด ๋ธ”๋ก์œผ๋กœ ์ง‘์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 1๋ฒˆ ๋ธ”๋ก์€ 2,3,4,5, ... ์ธ ์œ„์น˜์— ์šฐ์„  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ 2๋ฒˆ ๋ธ”๋ก์€ 4,6,8,10, ... ์ธ ์œ„์น˜์— ์„ค์น˜ํ•˜๊ณ , 3๋ฒˆ ๋ธ”๋ก์€ 6,9,12... ์ธ ์œ„์น˜์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ 3๋ฒˆ ๋ธ”๋ก๊นŒ์ง€ ์„ค์น˜ํ•˜๊ณ  ๋‚˜๋ฉด ์ฒซ 10๊ฐœ์˜ ๋ธ”๋ก์€ 0, 1, 1, 2, 1, 3, 1, 2, 3, 2์ด๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ™์‹œ๋Š” ๊ธธ์ด๊ฐ€ 1,000,000,000์ธ ๋„๋กœ์— 1๋ฒˆ ๋ธ”๋ก๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 10,000,000๋ฒˆ ๋ธ”๋ก๊นŒ์ง€ ์œ„์˜ ๊ทœ์น™์œผ๋กœ ๋ชจ๋‘ ๋†“์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ™์‹œ์˜ ์‹œ์žฅ๋‹˜์€ ํŠน์ • ๊ตฌ๊ฐ„์˜ ์–ด๋–ค ๋ธ”๋ก์ด ๊น”๋ ค ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ตฌ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ˆ˜ begin, end ๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด ์งˆ ๋•Œ, ๊ทธ ๊ตฌ๊ฐ„์— ๊น”๋ ค ์žˆ๋Š” ๋ธ”๋ก์˜ ์ˆซ์ž ๋ฐฐ์—ด(๋ฆฌ์ŠคํŠธ)์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • begin, end ๋Š” 1 ์ด์ƒ 1,000,000,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ด๊ณ , begin๋Š” ํ•ญ์ƒ end๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.
  • end - begin ์˜ ๊ฐ’์€ ํ•ญ์ƒ 10,000์„ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

begin end result
1 10 [0, 1, 1, 2, 1, 3, 1, 4, 3, 5]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ธ”๋Ÿญ์ด ๊น”๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โ€ป ๊ณต์ง€ - 2019๋…„ 4์›” 07์ผ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm Problem > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[python] ๋ฐฑ์ค€ - 9658. ๋Œ ๊ฒŒ์ž„4  (0) 2020.09.16
[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ง€ํ˜• ํŽธ์ง‘  (2) 2020.09.16
[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹จ์–ด ํผ์ฆ(2017 ํŒ์Šคํƒ€์šด)  (0) 2020.09.14
[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ง•๊ฒ€๋‹ค๋ฆฌ  (4) 2020.09.13
[python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - N-Queen  (2) 2020.09.13
    'Algorithm Problem/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] ๋ฐฑ์ค€ - 9658. ๋Œ ๊ฒŒ์ž„4
    • [python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ง€ํ˜• ํŽธ์ง‘
    • [python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹จ์–ด ํผ์ฆ(2017 ํŒ์Šคํƒ€์šด)
    • [python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ง•๊ฒ€๋‹ค๋ฆฌ
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”