File tree Expand file tree Collapse file tree 1 file changed +99
-0
lines changed
kojungbeom/Programmers/Level2 Expand file tree Collapse file tree 1 file changed +99
-0
lines changed Original file line number Diff line number Diff line change 1+ def solution (numbers ):
2+ answer = 0
3+ permute = set ()
4+ # DFS로 모든 숫자의 케이스를 set에 저장하자
5+ stack = [([], [0 ]* len (numbers ))] # current list, visited
6+ lenN = len (numbers )
7+ while stack :
8+ currentT , visited = stack .pop ()
9+ permute .add (tuple (currentT ))
10+ if len (currentT ) == lenN :
11+ continue
12+
13+ for i in range (lenN ):
14+ if not visited [i ]:
15+ new_cT = currentT [:]
16+ new_visisted = visited [:]
17+ new_cT .append (numbers [i ])
18+ new_visisted [i ] = True
19+ stack .append ([new_cT , new_visisted ])
20+
21+ temp = []
22+ new_permute = []
23+ for p in permute :
24+ p_str = '' .join (p )
25+ if p and not p [0 ] == '0' :
26+ new_permute .append (int (p_str ))
27+
28+ def sosu (n ):
29+ if n < 2 :
30+ return False
31+ elif n == 2 :
32+ return True
33+ else :
34+ for i in range (2 , n // 2 + 1 ):
35+ if n % i == 0 :
36+ return False
37+ return True
38+ for p in new_permute :
39+ if sosu (p ):
40+ answer += 1
41+
42+ return answer
43+
44+
45+ #ChatGPT의 개선안
46+ from itertools import permutations
47+
48+ def solution (numbers ):
49+ answer = 0
50+ permute = set ()
51+ for i in range (1 , len (numbers ) + 1 ):
52+ permute |= set (map (int , map ('' .join , permutations (numbers , i ))))
53+
54+ def is_prime (n ):
55+ if n < 2 :
56+ return False
57+ for i in range (2 , int (n ** 0.5 ) + 1 ):
58+ if n % i == 0 :
59+ return False
60+ return True
61+
62+ for p in permute :
63+ if is_prime (p ):
64+ answer += 1
65+
66+ return answer
67+
68+
69+ def solution (numbers ):
70+ answer = 0
71+ visited = [False ] * len (numbers )
72+ permute = set ()
73+
74+ def dfs (current ):
75+ nonlocal permute
76+ if current :
77+ permute .add (int ('' .join (current )))
78+
79+ for i in range (len (numbers )):
80+ if not visited [i ]:
81+ visited [i ] = True
82+ dfs (current + [numbers [i ]])
83+ visited [i ] = False
84+
85+ dfs ([])
86+
87+ def is_prime (n ):
88+ if n < 2 :
89+ return False
90+ for i in range (2 , int (n ** 0.5 ) + 1 ):
91+ if n % i == 0 :
92+ return False
93+ return True
94+
95+ for p in permute :
96+ if is_prime (p ):
97+ answer += 1
98+
99+ return answer
You can’t perform that action at this time.
0 commit comments