๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/Programmers

[Programmers] ์†Œ์ˆ˜ ์ฐพ๊ธฐ

 

 

๋ฌธ์ œ 

 

ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ์‚ฌํ•ญ

 

  • numbers๋Š” ๊ธธ์ด 1 ์ด์ƒ 7 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • numbers๋Š” 0~9๊นŒ์ง€ ์ˆซ์ž๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "013"์€ 0, 1, 3 ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

์ฝ”๋“œ 

 

import itertools
import math

def solution(numbers):
    arr = []
    answer = []
    idx = 0
    
    # numbers์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ํ™œ์šฉํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ˆœ์—ด ๊ตฌํ•จ. 
    for i in range(1,len(numbers)+1):
        num = list(map(''.join, itertools.permutations(numbers,i)))
        arr.append(num)
    
    # 2์ฐจ์› ๋ฐฐ์—ด 1์ฐจ์› ๋ฐฐ์—ด๋กœ ์ „ํ™˜. 
    arr = sum(arr,[])
    arr = list(set(arr))
    
    # ๋ฐฐ์—ด ๋‚ด ์›์†Œ ์ค‘ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ 0 ์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋งŒ ์ •์ˆ˜ํ˜•์œผ๋กœ ์ „ํ™˜ํ•ด์„œ answer์— ์ถ”๊ฐ€. 
    for k in arr:
        if k[0] == '0':
            continue
        else:
            answer.append(int(k))
    
    # ํŠน์ •์ˆซ์ž๊ฐ€ 2๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋  ๊ฒฝ์šฐ ๋ฐฐ์—ด ๋‚ด์— ๊ฐ™์€ ์ˆ˜๊ฐ€ ์ค‘๋ณตํ•ด์„œ ์กด์žฌํ•˜๊ฒŒ ๋˜๊ธฐ์— set๋กœ ๋ฐ”๊ฟ”์คŒ. 
    answer = list(set(answer))
    
    # ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์ˆ˜์˜ ์ œ๊ณฑ๊ทผ ์ดํ•˜๊นŒ์ง€๋งŒ ๋‚˜๋ˆ„์–ด๋ณด๋ฉด์„œ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค. 
    for z in answer:
        cnt = 0
        sqrt = int(math.sqrt(z))
        if z != 0 and z != 1:
            for j in range(2,sqrt+1):
                if z % j == 0:
                    cnt += 1
            if cnt == 0:
                idx += 1

    return idx
๋ถ„์„ > ๊ฑฐ์˜ ๋‹ค ํ’€์—ˆ์„ ๋•Œ ๊ณ„์† ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์„œ ์–ด๋””๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ์ฐพ๋Š”๋ฐ์— ์‹œ๊ฐ„์ด ๊ฝค๋‚˜ ์†Œ์š”๋˜์—ˆ๋‹ค. ๊ฒฐ๊ตญ ์ฐพ์•„๋‚ธ ๊ฒƒ์€ ์†Œ์ˆ˜๋ฅผ 1๋ถ€ํ„ฐ ์ž์‹ ๋ณด๋‹ค 1 ํฐ ์ˆ˜๊นŒ์ง€ ๋ชจ๋‘ ๋‹ค ํ•œ ๋ฒˆ์”ฉ ๋‚˜๋ˆ ๋ณด๋Š” ๊ณผ์ •์ด ํšจ์œจ์„ฑ์„ ์ €ํ•˜์‹œํ‚จ๋‹ค ๊ฒƒ์ด์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์•Œ๊ฒŒ๋œ ๊ฒƒ์€, ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ๋•Œ ์ž์‹ ์˜ ์ œ๊ณฑ๊ทผ ์ดํ•˜๊นŒ์ง€๋งŒ ๋‚˜๋ˆ„์–ด์„œ ๋‚˜๋ˆ„์–ด์ง€๋Š” ํšŸ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๊ทธ ๋‚˜๋ˆ„์–ด์ง„ ํšŸ์ˆ˜๊ฐ€ 0์ด๋ฉด ์†Œ์ˆ˜๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 24์˜ ๊ฒฝ์šฐ 2 * 12, 3 * 8, 4 * 6 ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2,3,4 ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด๋ณด์•„๋„ ์ด ์ˆ˜๊ฐ€ 6,8,12 ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์†Œ์ˆ˜์ธ 11์˜ ๊ฒฝ์šฐ ์ œ๊ณฑ๊ทผ์ด 3.3XX ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— 3๊นŒ์ง€๋งŒ ๋‚˜๋ˆ„์–ด๋ณด์•„๋„ ์ด ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ํ™œ์šฉํ•ด์„œ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋ ค๋Š” ์ˆ˜๊ฐ€ 0๊ณผ 1์ด ์•„๋‹ ๋•Œ 2๋ถ€ํ„ฐ ์ž์‹ ์˜ ์ œ๊ณฑ๊ทผ ์ดํ•˜๊นŒ์ง€์˜ ์ˆ˜๋กœ ์ž์‹ ์„ ๋‚˜๋ˆ„์–ด์„œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ํšŸ์ˆ˜๋ฅผ ํ†ตํ•ด ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

* ์ฐธ๊ณ ํ•œ ๊ธ€ 

 

 

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

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

programmers.co.kr

 

 

 

 

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์†Œ์ˆ˜ ์ฐพ๊ธฐ

ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด

programmers.co.kr