Skip to content

Commit 989e8fb

Browse files
committed
[PGS] 소수 찾기 / Level2 / 26분
1 parent 7be6343 commit 989e8fb

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
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

0 commit comments

Comments
 (0)