๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ’ก/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์™„์ „ํƒ์ƒ‰] ์†Œ์ˆ˜ ์ฐพ๊ธฐ(ํŒŒ์ด์ฌ)

by @ENFJ 2022. 12. 21.

๋ฌธ์ œ ํ’€๊ธฐ ์ „ ์•Œ์•„์•ผ ๋  ์ง€์‹

- ์ˆœ์—ด(permutations)

์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ• ๋•Œ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ค‘๋ณต์—†์ด ๋ฝ‘์„ ๊ฒฝ์šฐ์˜ ์ˆ˜.

 

 

 

ํŒŒ์ด์ฌ์—๋Š” ์ˆœ์—ด(permutations)์™€ ์กฐํ•ฉ ์„ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ชจ๋“ˆ iteratools๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ 

 

from iteratools import permutations

์œ„ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

 

 

์˜ˆ์‹œ ์ฝ”๋“œ

from iteratools import permutations # ์ˆœ์—ด๊ณผ ์กฐํ•ฉ์„ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ชจ๋“ˆ itertools ์‚ฌ์šฉ
arr = ['a','b','c','d'] # ์˜ˆ์‹œ๋กœ ๋ฐฐ์—ด ์„ค์ •ํ•˜์—ฌ arr ๋ณ€์ˆ˜ ์ €์žฅ
print(permutations(arr,2)) # ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(๋ฆฌ์ŠคํŠธ,ํŠœํ”Œ,๋ฌธ์ž์—ด)์•ˆ์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ r์€ 2๋กœ ์žก์•˜์Œ 

for i in permutations(arr,2): # ๋ฐฐ์—ด ์—์„œ 2๊ฐœ ์„ ํƒํ•˜์—ฌ i์— ๋„ฃ์–ด์„œ ๋ฐ˜๋ณต์‹œํ‚จ๋‹ค.
	print(i) # i ๊ฐ’ ์ถœ๋ ฅ

ํ’€์ด

from itertools import permutations # itertools ๋ชจ๋“ˆ์—์„œ permutations ๊ฐ€์ ธ์˜ค๊ธฐ

array = [] # ๋ณ€์ˆ˜ array ๋ช… [] ๋ฐฐ์—ด ์ƒ์„ฑ

def check_prime_number(numberA): # check_prime_number ํ•จ์ˆ˜ , ์ธ์ˆ˜ numberA ๋กœ ๋ฐ›์Œ.
    number = int(numberA) # ๋ณ€์ˆ˜ number ์— ์ •์ˆ˜ํ˜• ์œผ๋กœ numberA ์ €์žฅํ•˜๊ธฐ
    if number != 1 and number != 0: # ๋งŒ์•ฝ ๋ฐ›์€ ์ •์ˆ˜ํ˜• numberA์ธ number๋ณ€์ˆ˜๊ฐ€ 1์ด ์•„๋‹๊ฒฝ์šฐ ์™€ 0์ด ์•„๋‹๊ฒฝ์šฐ                
        for f in range(2, number): # 2๋ถ€ํ„ฐ number๊นŒ์ง€ ๋ฐ˜๋ณต for๋ฌธ ๋Œ๋ฆผ  
            if number % f == 0:     # number์—์„œ f๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 0์ผ๊ฒฝ์šฐ 
                return False # false ๋ฐ˜ํ™˜ํ•˜๊ฒŒ๋จ.
    else: # number๊ฐ€ 1์ด๊ฑฐ๋‚˜ 0์ผ๊ฒฝ์šฐ (์ฆ‰ ์•„๋‹๊ฒฝ์šฐ)
        return False # false ๋ฐ˜ํ™˜ํ•จ

    array.append(number) #๋ณ€์ˆ˜array(๋ฆฌ์ŠคํŠธ)์— number ๊ฐ’ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ.


    
def solution(numbers): #ํ•จ์ˆ˜ solution์— numbers ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ธฐ.
    
    for length in range(1, len(numbers)+1):
        perList = list(map(''.join, permutations(list(numbers), length))) 
        
        for per in perList:
            check_prime_number(per)
                

    result = set(array)
    return len(result)
  1. ์šฐ์„  ์†Œ์ˆ˜๊ฐ€ ๋งž๋‹ค๋ฉด ๋ฐฐ์—ด(array)์— ๋„ฃ์–ด์ฃผ๋Š” ์†Œ์ˆ˜ Check ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๊ณ 
  2. ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•˜์—ฌ, 
  3. itertools์˜ permutations์„ ์ด์šฉํ•˜์—ฌ ๊ฐ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ๊ตฌํ•˜์—ฌ ๋ฐฐ์—ด(perList)์— ํฌํ•จ์‹œ์ผœ์ฃผ๊ณ 
  4. ๋ฐฐ์—ด(perList)์„ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด, ์œ„ 1๋ฒˆ์—์„œ ๊ตฌํ˜„ํ•œ ์†Œ์ˆ˜ Check๋กœ Filtering ํ•˜์—ฌ ๋ฐฐ์—ด(array)์— ํฌํ•จํ•ด์ฃผ๋ฉฐ
  5. ๋งˆ์ง€๋ง‰์œผ๋กœ Filtering๋œ ๋ฐฐ์—ด(array)์„ Set์œผ๋กœ ์น˜ํ™˜ํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„ ๊ฐฏ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.