본문 바로가기

python-algorithm1413

[백준] 1434 1 2 3 4 5 import sys n,m = map(int, sys.stdin.readline().split()) A=list(map(int,sys.stdin.readline().split())) B=list(map(int,sys.stdin.readline().split())) print(sum(A)-sum(B)) cs 문제가 길긴 한데 손으로 풀어보시면서 하면 간단하게 풀립니다. 브론즈2 난이도가 조금 아깝습니다. 2021. 1. 6.
[백준] 1392 1 2 3 4 5 6 7 8 9 10 11 import sys n,q = map(int,sys.stdin.readline().split()) tmp=[0] cnt=0 for i in range(n): cnt+= int(sys.stdin.readline()) tmp.append(cnt) for i in range(q): test=int(sys.stdin.readline()) for _ in range(len(tmp)): if tmp[_] 2021. 1. 6.
[백준] 1350 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import sys n=int(sys.stdin.readline()) if n>1: tmp=list(map(int, sys.stdin.readline().split())) cluster=int(sys.stdin.readline()) cnt=0 for i in range(n): if tmp[i]!=0: if tmp[i]%cluster!=0: cnt+=(tmp[i]//cluster) +1 else: cnt+= tmp[i]//cluster print(cnt*cluster) else: tmp=int(sys.stdin.readline()) cluster=int(sys.stdin.readline()) if tmp%cluster==0: pri.. 2021. 1. 6.
[백준] 1264 1 2 3 4 5 6 7 8 moum='aeiou' while True: s = input().lower() if s=='#': exit() cnt=0 for i in s: if i in moum : cnt+=1 print(cnt) cs 문자열 중에 대문자가 있으면 인식을 못하므로 python 내장 함수 lower()을 이용해서 문자열 전체를 소문자화 시킵니다. 2021. 1. 6.
[백준] 1233 1 2 3 4 5 6 7 8 9 10 import sys s1,s2,s3=map(int,sys.stdin.readline().split()) tmp=[0]*81 for i in range(1,s1+1): for j in range(1, s2 + 1): for k in range(1, s3 + 1): tmp[i+j+k]+=1 for i in range(1,81): if tmp[i]==max(tmp): print(i); break cs 3중 for 문 써도 시간은 무난한데 메모리가 좀.. 2021. 1. 5.
[백준] 1225 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import sys a,b = sys.stdin.readline().split() tmpA=[] tmpB=[] tmp=0 for i in range(len(a)): tmpA.append( int (a[i])) for i in range(len(b)): tmpB.append( int (b[i])) for i in range(len(tmpA)): for j in range(len(tmpB)): tmp+= tmpA[i]*tmpB[j] print(tmp) cs 우선 pypy3로 풀었구요 최대 경우의수가 9999*9999 이므로 약 1억이거든요 시간이나 메모리 관리에 신경써야 할 문제 입니다. 2021. 1. 5.
[백준] 20053 1 2 3 4 5 import sys for _ in range(int(sys.stdin.readline())): dummy=sys.stdin.readline() tmp=list(map(int,sys.stdin.readline().split())) print(min(tmp),max(tmp)) cs python 내장함수 min, max를 이용해서 쉽게 풀었으나 정수의 개수가 백만 개에서 천만 개로 개수가 늘어난다면 조금 다른방법을 생각봐야지 않을까.. 싶습니다. 2021. 1. 5.
[백준] 19572 1 2 3 4 5 6 7 8 import sys d1,d2,d3=map(int,sys.stdin.readline().split()) if (d1+d2-d3)/2 2021. 1. 5.
[백준] 18247 1 2 3 4 5 import sys for _ in range(int(sys.stdin.readline())): n, m = map(int, sys.stdin.readline().split()) if n 2021. 1. 5.
[백준] 17945 1 2 3 4 5 6 import sys import math a,b=map(int, sys.stdin.readline().split()) if -a+int (math.sqrt(a**2-b))== -a-int (math.sqrt(a**2-b)): print(-a+int (math.sqrt(a**2-b))) else: print (-a-int (math.sqrt(a**2-b)),-a+int (math.sqrt(a**2-b))) cs 문제 설명은 길지만 근의공식을 구현하는 방식입니다. 2021. 1. 5.
[백준] 17618 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import sys def singi(n): tmp=n cnt=0 while tmp!=0: cnt+=tmp%10 tmp=tmp//10 if n%cnt==0 : return 1 else : return 0 n=int(sys.stdin.readline()) ans=0 for i in range(1,n+1): if singi(i)==1: ans+=1 print (ans) cs 일단 이 문제도 저처럼 하시면 python3 로는 시간초과뜹니다. 구현 방식이 얼추 비슷한것같은데 고민이 좀 더 필요해보이네요 2021. 1. 5.
[백준] 17450 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import sys s_price,s_weight=map(int,sys.stdin.readline().split()) n_price,n_weight=map(int,sys.stdin.readline().split()) u_price,u_weight=map(int,sys.stdin.readline().split()) if s_price*10>=5000: s_gsb= (s_weight*10)/(s_price*10 - 500) else : s_gsb=(s_weight*10)/(s_price*10 ) if n_price*10>=5000: n_gsb= (n_weight*10)/(n_price*10 - 500) else : n_gsb=(n_weight*10).. 2021. 1. 5.