Algorithm(44)
-
[python 파이썬] 백준 11660번 구간합구하기5
11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 이 문제 또한 구간합을 이용한 문제고 2차원 배열에 적용한 것이었다. import sys input = sys.stdin.readline n, m = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] dp = [[0] * n for _ in range(n)] dp[0][0] = graph[0][0] for i in range(1, n): ..
2021.02.15 -
[python 파이썬] 백준 11659번 구간합구하기 4
11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 풀이1 - 시간초과 import sys n,m = map(int,input().split()) nlist = list(map(int,sys.stdin.readline().split())) for _ in range(m): i,j = map(int,input().split()) sum=0 for i in range(i-1,j): sum+=nlist[i] print(sum) #시간초과 풀이2 - 정답 단순 sum으로 구하면 시간초과가 나와 왤까..
2021.02.15 -
[python 파이썬] 백준 12865번 평범한 배낭
12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net N,K = map(int, input().split()) weight = [0] gold =[0] for _ in range(N): w, g= map(int, input().split()) weight.append(w) gold.append(g) dp=[[0 for i in range(K+1)] for k in range(N+1)] for w in range(1, N+1): for i in rang..
2021.02.09 -
[python 파이썬] 백준 1535번 안녕
1535번: 안녕 첫째 줄에 사람의 수 N(
2021.02.09 -
[python 파이썬] 백준 1739번 타일링
1793번: 타일링 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 숫자 0 ≤ n ≤ 250이 주어진다. www.acmicpc.net 얼핏보면 피보나치지만 문제의 조건에서 2*1 , 2*2 두가지 타일로 채울 수 있다고하여 수기로 채우는 방법을 적어보고 규칙을 찾아 풀었다 def cnt(n): fib=[0 for _ in range(n+1)] if n ==0 or n==1: return 1 fib[0]=1 fib[1]=1 for i in range(2,n+1): fib[i]=fib[i-1]+2*fib[i-2] return fib[n] while True: try: print(cnt(int(input()))) except: break
2021.02.05 -
[python 파이썬] 백준 2565번 파이썬
2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 이 문제는 정렬부터 했어야했는데 정렬을 생각해내지 못했다. 풀이법 1. A의 위치번호로 정렬하기 2. A에 연결된 B의 위치번호가 현재 가리키는 위치번호보다 위에 위치한 전깃줄의 최대 갯수에 +1 3. 전체에서 최대개수빼기 n = int(input()) line=[list(map(int,input().split())) for _ in range(n)] line.sort(key=lambda x :x[0]) dp=[0]*501 for s, d in line: dp[d]=m..
2021.02.05