SWEA 7854. 최약수 (Python)(D4)

Wjong·2023년 2월 7일
0

swea

목록 보기
25/36

X가 10이하인 경우, 최약수는 1, 2, 5, 10
X가 100이하인 경우, 최약수는 10, 20, 25, 50
X가 1000이하인 경우, 최약수는 100, 125, 200, 250, 500
X가 10^n (n>3)이하인 경우, 최약수는 100(10(n-2)), 125(10(n-2)), 200(10(n-2)), 250(10(n-2)), 500(10(n-2))
--> X의 길이가 n인경우, 최약수+=5(n-4), 100(10(n-3)), 125(10(n-3)), 200(10(n-3)), 250(10(n-3)), 500(10(n-3))
즉, 1000부터 10단위로 최약수는 5개씩 늘어나고, 100k, 125k, 200k, 250k, 500k를 넘는지 카운트.

res=[]
for m in range(int(input())):
    tmp=0
    X=int(input())
    li=[{1,2,5},{10,20,25,50},{100,125,200,250,500}]
    for i in li[0]:
        if i<=X:
            tmp+=1
    for i in li[1]:
        if i<=X:
            tmp+=1
    for i in li[2]:
        if i<=X:
            tmp+=1
    if X>=1000:
        tmp+=5*(len(str(X))-4)
        for i in li[2]:
            if i*(10**(len(str(X))-3))<=X:
                tmp+=1
    res.append(tmp)
for i in range(len(res)):
    print("#%d %s"%(i+1,res[i]))
profile
뉴비

0개의 댓글