내맘대로IT/Python 30

백준 14719 빗물

h,w = map(int,input().split()) n= list(map(int,input().split())) ans = 0 for i in range(1,w-1): left= max(n[:i]) right = max(n[i:]) m= min(left,right) if m>n[i]: ans += m-n[i] print(ans) 1.세로,가로 h,w 수 입력 2.높이는 list로 저장 3.ans에 출력값(초기값: 0) 4.for문은 첫번째 즉,n[0] 마지막 n[-1]을 제외하고 돌린다. 5.i일때 왼쪽.오른쪽 중 max값을 보고, 그중 높이가 낮은 m을 골라낸다. 6.이때, m이 현재 수보다 크면 m에서 현재수를 빼고 ans에 더해서 저장. 7.ans출력

백준 파이썬 2581 소수

m=int(input()) n=int(input()) l= [] for i in range(m,n+1): for j in range(2,i+1): if i%j == 0: if i==j: l.append(i) break l.sort() if l == []: print(-1) else: print(sum(l)) print(l[0]) 1.m,n에 자연수범위 입력 2.소수를 저장할 리스트생성 l 3.m,n범위 내에서 2부터 n까지 for문 4.i,j가 나눠서 0으로 떨어지고, 그 수가 같아야 소수, 같지않으면 빠져나옴 5.sorting 후 l에 소수가 없으면 -1출력 6.소수가 있으면 합과 최소값 출력

백준 파이썬 2609번 최대공약수와 최소공배수

1.유클리드호제법 첫번째 방식은 유클리드 호제법으로 푼 내용이다. 일종의 공식과 같은 것이니, 네이버나 구글 찾아보면 유클리드호제법이라고 설명이 잘 나와있다. i,j = map(int,input().split()) n,m = max(i,j),min(i,j) while m>0: n,m = m,n%m print(n) print((i*j)//n) #24,18->18,6->6,0 n=6 #24*18/6 = 72 입력받는 두 수 중 큰수와 작은 수를 먼저 n,m에 다시 저장하고 m>0조건에서 while문을 돌려서 n에는 m을 m에는 n%m(나머지수)를 저장한다. n은 최대공약수 (i*j)//n은 최소공배수를 나타낸다. 문제에서 24,18을 입력하면 24,18->18,6->6,0 이렇게 되서 n=6 24*18/6 ..

백준 파이썬 10870번 피보나치수 5

for문과 재귀함수로 풀 수 있는 문제이다. 1.for문 -피보나치의 처음 수는 0,1로 시작 하기 때문에 먼저 f라는 리스트에 0,1 두 수만 넣어두고 시작한다. for문은 2번째부터 num까지 돌면서, i-1,i-2에 있는 값을 더해준 값이 i에 올 수이다. 이것을 f라는 리스트에 하나씩 더해주면 된다. 마지막으로 f리스트의 num번째 값을 호출해주면 된다. num = int(input()) f=[0,1] for i in range(2,num+1): n = f[i-1]+f[i-2] f.append(n) print(f[num]) 2.재귀함수 먼저 피보나치 함수를 만들어준다. 0,1은 그대로 n을 리턴하고 이 이상 수는 두 수를 더한 값을 리턴하면 된다. def fibonacci(n): if n

반응형