๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

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

๐ŸŽฎinspirer9 2023. 2. 18. 00:44
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

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

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

๋ธ”๋ก์€ 1์ด ์ ํžŒ ๋ธ”๋ก๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์ˆœ์„œ๋Œ€๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 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 ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ begin  end ≤ 1,000,000,000
  • end - begin ≤ 5,000

์ž…์ถœ๋ ฅ ์˜ˆ

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

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

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

โ€ป ๊ณต์ง€ - 2019๋…„ 4์›” 07์ผ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ€ป ๊ณต์ง€ - 2023๋…„ 2์›” 09์ผ ์ง€๋ฌธ๊ณผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์— ํ†ต๊ณผ๋˜์—ˆ๋˜ ์ฝ”๋“œ๊ฐ€ ํ†ต๊ณผ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ’€์ด

  • ์ฒ˜์Œ ๋ณด๊ณ  ์†Œ์ˆ˜ ๋ฌธ์ œ์ธ๊ฐ€? ์ƒ๊ฐํ–ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ 15๊ฐœ์™€ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ 6๊ฐœ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ ์œ„์— ์„ค๋ช…๋Œ€๋กœ 1๋ฒˆ ๋ฒฝ๋Œ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๊นŒ๋Š” ๊ฑธ๋กœ ๊ตฌํ˜„ํ•ด๋ฒ„๋ฆฌ๋ฉด ๋‹น๊ทผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ? ํ•œ๋ฐฉ์— ํ’€์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ์•„๋‹๊นŒ?
  • ๊ทผ๋ฐ ์ด๊ฑฐ ๋”ฑ ๋ณด๋‹ˆ๊นŒ ์ž์‹ ์„ ์ œ์™ธํ•œ ๊ฐ€์žฅ ํฐ ์•ฝ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ๋‹ค.
1 2 3 4 5 6 7 8 9 10
0 1 1 2 1 3 1 4 3 5
  • ํŒŒ์ด์ฌ math.gcd๋กœ ๋˜๋‚˜? ๋ฉ์ฒญ์•„! ๊ทธ๊ฑด ๊ณต๋ฐฐ์ˆ˜์ž–์•„... ใ…‹ใ…‹ใ…‹
  • ๋‹ค์‹œ ๋ด๋ด ์ผ๋‹จ ์ง์ˆ˜๋ฉด n/2๋‹ค.
  • ํ™€์ˆ˜๊ฐ€ ๋ฌธ์ œ.
    • ํ™€์ˆ˜๋Š” 1๋ถ€ํ„ฐ sqrt(n)๊นŒ์ง€ ๊ตฌํ•ด์•ผ๋˜๋‚˜?
    • ํ™€์ˆ˜์˜ ์ž์‹ ์„ ์ œ์™ธํ•œ ๊ฐ€์žฅ ํฐ ์•ฝ์ˆ˜
  • 1ํŠธ
    • ์ •ํ™•์„ฑ 13๋ฒˆ ์‹คํŒจ.
    • ํšจ์œจ์„ฑ ์˜ฌ ์‹คํŒจ(์‹œ๊ฐ„ ์ดˆ๊ณผ ์•„๋‹˜)
import math

def solution(begin, end):
    answer =[]
    
    def odd_check(n):
        if n == 1:
            return 0
        else:
            for i in range(3, int(math.sqrt(n)+1)):
                if n % i == 0:
                    return n // i
                    break
        return 1
    
    for i in range(begin, end+1):
        if i % 2 == 0:
            answer.append(i//2)
        else:
            answer.append(odd_check(i))
            
    return answer
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.11ms, 10MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.11ms, 10.3MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.15ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.03ms, 10MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.09ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.15ms, 10.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.11ms, 10.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.04ms, 10.1MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	์‹คํŒจ (0.00ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.21ms, 10.2MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	์‹คํŒจ (178.73ms, 10.6MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	์‹คํŒจ (244.52ms, 10.6MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	์‹คํŒจ (298.63ms, 10.5MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	์‹คํŒจ (351.76ms, 10.5MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	์‹คํŒจ (364.34ms, 10.5MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	์‹คํŒจ (316.73ms, 10.5MB)
  • ๊ณต์ง€์‚ฌํ•ญ์— ๋ญ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹ค๊ณ  ํ–ˆ์—ˆ์ง€?
  • ์•„... ๋ฒฝ๋Œ์ด ๋” ์ ์–ด...
  • "๊ทธ๋ ™์‹œ๋Š” ๊ธธ์ด๊ฐ€ 1,000,000,000์ธ ๋„๋กœ์— 1๋ถ€ํ„ฐ 10,000,000๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ธ”๋ก๋“ค์„ ์ด์šฉํ•ด"
  • ์‰ฌ์šธ ์ค„ ์•Œ์•˜๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์–ด๋ ค์›Œ์กŒ๋‹ค. ใ…‹ใ…‹ใ…‹
  • ์ง์ˆ˜๋„ ํ™€์ˆ˜๊ฐ€ ๋˜๊ณ , ์—„์ฒญ ํฐ ์†Œ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ชป ํ‘ธ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ๋„ค...
import sys
import math
sys.setrecursionlimit(10**5)

def solution(begin, end):
    answer =[]
    
    def even_check(n):
        n //= 2
        if n > 10000000:
            if n % 2 == 0:
                n = even_check(i)
            else:
                n = odd_check(i)
        return n
    
    def odd_check(n):
        if n == 1:
            return 0
        for i in range(2, n):
            if n % i == 0:
                if n // i <= 10000000:
                    return n // i
                    break
        return 1
        
    for i in range(begin, end+1):
        if i % 2 == 0:
            answer.append(even_check(i))
        else:
            answer.append(odd_check(i))
            
    return answer
  • ์žฌ๊ท€๋ฅผ ์ค„์—ฌ์•ผ ํ•˜๋Š”๋ฐ ์ง์ˆ˜ ๋ฐ–์— ๋ชป ์ค„์ž„...
import sys
import math
sys.setrecursionlimit(10**5)

def solution(begin, end):
    answer =[]
    
    def even_check(n):
        n //= 2
        while n > 10000000:
            if n % 2 != 0:
                n = odd_check(i)
            else:
                n //= 2
        return n
    
    def odd_check(n):
        if n == 1:
            return 0
        for i in range(3, n, 2):
            if n % i == 0:
                if n // i <= 10000000:
                    return n // i
                    break
        return 1
        
    for i in range(begin, end+1):
        if i % 2 == 0:
            answer.append(even_check(i))
        else:
            answer.append(odd_check(i))
            
    return answer
  • ์ฑ„์ ๊ฐ€์ฆˆ์•„!
  • ํ•˜์ง€๋งŒ ํšจ์œจ์„ฑ ํ†ต๊ณผ ๋ชป ํ•  ๋“ฏ... ์—ญ์‹œ๋‚˜...
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (12.02ms, 9.94MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (50.41ms, 10.1MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (28.46ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (18.05ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (3.38ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (37.07ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (5.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (12.03ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (53.30ms, 10.1MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (14.35ms, 10.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (11.87ms, 10.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (695.50ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (16.21ms, 10.2MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 2 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 3 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 4 ใ€‰	์‹คํŒจ (์‹œ๊ฐ„ ์ดˆ๊ณผ)
ํ…Œ์ŠคํŠธ 5 ใ€‰	
ํ…Œ์ŠคํŠธ 6 ใ€‰
  • ์†Œ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ฐพ์•„์•ผ ๋จ.
  • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋กœ ์ฒœ๋งŒ๊นŒ์ง€ ์ˆซ์ž์ค‘์— ์†Œ์ˆ˜๋ฅผ ์ €์žฅํ•ด๋‘๋ ค๊ณ  ํ–ˆ์œผ๋‚˜
import math

def solution(begin, end):
    answer =[]
    
    MAX = 10000001
    eratosthenes_sieve = [True] * MAX # ์†Œ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ
    eratosthenes_sieve[0] = eratosthenes_sieve[1] = False
    for i in range(2,MAX):
        if eratosthenes_sieve[i]:
            for j in range(2, int(MAX ** 0.5) + 1):
                if i % j == 0: # i๊ฐ€ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ, i์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค
                    for k in range(i, MAX, i):
                        eratosthenes_sieve[k] = False
    print(eratosthenes_sieve[6])
  •  ์‹คํ–‰์‹œ๊ฐ„์ด 10์ดˆ๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์‹คํ–‰์ด ์ค‘๋‹จ๋จ.

  • ์ด๋Ÿฐ ์ผ€์ด์Šค๊ฐ€ ๋ช‡๊ฐœ ์—†์„ ๊ฒƒ์ด๋‹ค...๋ผ๋Š”๊ฑด๊ฐ€? 
  • ... ์žํฌ์ž๊ธฐ๋‹ค... ๋ฌด์ง€์„ฑ ์ฝ”๋”ฉ ๊ฐ€์ฆˆ์•„!!!
  • ์ƒˆ๋ฒฝ 1์‹œ... ์ง„์งœ ํฌ๊ธฐ๋‹ค. ์™„์ „ ๋ฌด์ง€์„ฑ์œผ๋กœ ๊ฐ„๋‹ค....
  • ํ—?

  • ๊ทธ๋ƒฅ ๋ฌธ์ œ์—์„œ ๋งํ•˜๋Š” ๋Œ€๋กœ ์ฝ”๋”ฉํ•จ.
  • ์ด๊ฒŒ ์„ค๋งˆ ๊ตฌํ˜„ ๋ฌธ์ œ์˜€๋‹ค๋‹ˆ... ใ„ทใ„ทใ„ท
  • ์ž์‹ ์„ ์ œ์™ธํ•œ ๊ฐ€์žฅ ํฐ ์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ๊ฒƒ๋งŒ ๋œ ๋ฌด์ง€์„ฑ์œผ๋กœ ํ–ˆ์œผ๋ฉด ๋นจ๋ž์„ํ…๋ฐ ์•„์‰ฝ๋‹ค.
def get_larger_but_smaller_than_10M(n):
    divisors = [1]
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n//i:
                divisors.append(n//i)
    for i in range(len(divisors)):
        if divisors[i] > 10000000:
            divisors[i] = 1
    return max(divisors)

def solution(begin, end):
    length = end - begin + 1
    array = [0] * length

    for i in range(begin, end+1):
        if array[i-begin] == 0:
            array[i-begin] = get_larger_but_smaller_than_10M(i)
        for j in range(i*2, end+1, i):
            array[j-begin] = i

    if begin == 1:
        array[0] = 0
        
    return array
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (1.28ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.83ms, 10.4MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (1.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.39ms, 10.3MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.23ms, 10.3MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (1.72ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.25ms, 10.4MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.62ms, 10.4MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.58ms, 10.4MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.67ms, 10.4MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.56ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.46ms, 10.4MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.26ms, 10.4MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (1.60ms, 10.3MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (2432.80ms, 10.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (3823.08ms, 10.8MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (4690.62ms, 10.6MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (6079.13ms, 10.6MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (6633.37ms, 10.7MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (4767.64ms, 10.6MB)
  • ์ง€์„ฑ์ด ์žˆ๋Š” ๊ณ ์ˆ˜๋“ค์˜ ํ’€์ด...
  • ๋„ค, ์ €๋„ ์ฒ˜์Œ์—๋Š” ์ด ์ •๋„ ๊ธธ์ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ–ˆ์”๋ฏธ๋‹ค.
  • ๊ทผ๋ฐ ๊ทธ๋• ์•ˆ๋์—ˆ๋‹ค๊ตฌ์š”.
def solution(begin, end):
    answer = []
    #์•ฝ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜ ์ฐพ๊ธฐ
    for i in range(begin,end+1):
        if i>1:
            a=1
            for j in range(2,int(i**(1/2))+1):
                if i%j==0:
                    a=j
                    if i//j<=10000000:
                        a=i//j
                        break
            answer.append(a)
        elif i==1:
            answer.append(0)
    return answer
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.11ms, 10.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.14ms, 10.3MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.25ms, 10.3MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.18ms, 10.2MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.3MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.3MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.35ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.4MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.26ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.44ms, 10.1MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (509.04ms, 10.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (834.14ms, 10.8MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (1134.45ms, 10.5MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (1602.54ms, 10.6MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1862.51ms, 10.6MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (1333.27ms, 10.7MB)
from math import sqrt

def get_div(n):
    if n == 1:
        return 0
    elif n <= 3:
        return 1

    tmp = []
    for i in range(2, int(sqrt(n)) + 1):
        if n%i == 0:
            d = int(n/i)
            if d <= 10000000:
                return d
            else:
                tmp.append(i)
    if tmp:
        return tmp[-1]
    return 1

def solution(begin, end):
    answer = [get_div(i) for i in range(begin, end+1)]
    return answer
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.10ms, 10.1MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.17ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.10ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.12ms, 10.3MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.18ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.23ms, 10.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.51ms, 9.96MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.25ms, 10MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.03ms, 10.1MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (511.13ms, 10.6MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (792.36ms, 10.5MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (1159.49ms, 10.6MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (1684.38ms, 10.6MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1706.12ms, 10.5MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (1336.56ms, 10.6MB)
  • ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ์—์„œ ์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์œ„์—๊ฑฐ ์ฐธ๊ณ ํ•ด์„œ ๊ณ ์ณค๋‹ค.
def get_larger_but_smaller_than_10M(n):
    divisors = []
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            d = int(n/i)
            if d <= 10000000:
                return d
            else:
                divisors.append(i)
    if divisors:
        return divisors[-1]
    return 1

def solution(begin, end):
    length = end - begin + 1
    array = [0] * length

    for i in range(begin, end+1):
        if array[i-begin] == 0:
            array[i-begin] = get_larger_but_smaller_than_10M(i)
        for j in range(i*2, end+1, i):
            array[j-begin] = i

    if begin == 1:
        array[0] = 0
        
    return array

์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.14ms, 10.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.16ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.16ms, 10.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.09ms, 10MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.22ms, 10.2MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.10ms, 10.4MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.40ms, 10.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.29ms, 10.2MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.12ms, 10.3MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.26ms, 9.98MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.33ms, 10.3MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (513.00ms, 10.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (872.49ms, 10.8MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (1235.25ms, 10.6MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (1627.39ms, 10.6MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1867.44ms, 10.6MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (1402.81ms, 10.7MB)
728x90
๋ฐ˜์‘ํ˜•