File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ # 연습문제
2
+ # https://school.programmers.co.kr/learn/courses/30/lessons/138475
3
+
4
+ def find (counts , desc , start ):
5
+ for d in desc :
6
+ nums = counts [d ]
7
+ for i in nums :
8
+ if i >= start :
9
+ return i
10
+
11
+ def solution (e , starts ):
12
+ from collections import defaultdict
13
+ divisor = [0 for _ in range (e + 1 )]
14
+ counts = defaultdict (list )
15
+ divisor [1 ] = 1
16
+
17
+ # 파이썬으로 통과하고 싶으면, 아래의 최적화 기법으로 계산해야됨.
18
+ # for i in range(1, int(e**0.5)+1):
19
+ # divisor[i**2] += 1
20
+
21
+ # 이부분은 이해가 안됨...
22
+ # for i in range(2,e+1):
23
+ # for j in range(1,min(e//i+1,i)):
24
+ # divisor[i*j] += 2
25
+
26
+ for i in range (2 , e + 1 ):
27
+ for j in range (1 , e // i + 1 ):
28
+ divisor [i * j ] += 1
29
+
30
+ for i in range (1 , e + 1 ):
31
+ counts [divisor [i ]].append (i )
32
+
33
+ desc = sorted (counts .keys (), reverse = True )
34
+ answer = []
35
+ for start in starts :
36
+ res = find (counts , desc , start )
37
+ answer .append (res )
38
+
39
+ return answer
40
+
41
+ e = [8 ]
42
+ starts = [[1 ,3 ,7 ]]
43
+ result = [[6 ,6 ,8 ]]
44
+
45
+ for q in [0 ]:
46
+ qid = solution (e [q ], starts [q ])
47
+ if qid == result [q ]:
48
+ print (f'correct { qid } ' )
49
+ else :
50
+ print (f'incorrect { qid } ' )
You can’t perform that action at this time.
0 commit comments