Skip to content

Commit 112acba

Browse files
committed
억억단을 외우자 풀이
1 parent 3fc4941 commit 112acba

File tree

1 file changed

+50
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)