본문 바로가기

분류 전체보기

(109)
[MySQL] JOIN JOIN이란 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해주는 연산 - JOIN = INNER JOIN = CROSS JOIN ON 절의 조건을 만족하는 데이터만을 가져온다. ON 절에서는 WHERE 절에서 사용할 수 있는 모든 조건을 사용할 수 있다. SELECT * FROM Reservation INNER JOIN Customer ON Reservation.Name = Customer.Name; SELECT * FROM Reservation JOIN Customer ON Reservation.Name = Customer.Name SELECT * FROM Reservation, Customer WHERE Reservation.Name = Custome..
[Python | 파이썬] 백준 파일 합치기 11066 [Python | 파이썬] 백준 파일 합치기 11066 참고한 블로그 : https://inspirit941.tistory.com/254 더보기 # import sys INF = int(1e9) # input = sys.stdin.readline tc = int(input().rstrip()) for t in range(tc): n = int(input().rstrip()) arr = list(map(int, input().rstrip().split())) cumsum = {-1:0} for i in range(len(arr)): cumsum[i] = cumsum[i-1] + arr[i] dp = [[0 for _ in range(len(arr))] for _ in range(len(arr))] for ..
[Python | 파이썬] 백준 계단 오르기 2579 [Python | 파이썬] 백준 계단 오르기 2579 각 계단을 밟을때의 최대값을 dp배열에 저장한다. 이때 연속된 3개의 계단을 밟을 수 없다. 더보기 import sys input = sys.stdin.readline n = int(input()) step = [] for i in range(n): step.append(int(input())) dp = [] # 계단의 갯수가 1개,2개일 때를 생각해서 dp.append(step[0]) if n > 2: dp.append(max(step[0] + step[1], step[1])) dp.append(max(step[0] + step[2], step[1]+step[2])) for k in range(3, n): dp.append(max(dp[k-2]+st..
[Python | 파이썬] 백준 10844 쉬운 계단 수 [Python | 파이썬] 백준 10844 쉬운 계단 수 마지막 글자가 0부터 9까지 존재할 수 있으므로 이를 각 열로 하고 각 행은 0~n까지로 하는 배열 dp를 선언한다. 한 자릿수는 모두 1로 초기화한다. (i == 1) 두자리 이상의 수는 만약 맨 뒤에 글자가 0이라면 뒤에서 두번째 글자는 반드시 1이 와야 한다. 따라서 길이가 i-1이고 마지막 글자가 1인 dp[i-1][1]의 값으로 갱신한다. dp[i][0] = dp[i-1][1] 맨 뒤의 글자가 9인 경우에도 뒤에서 두번째 글자는 반드시 8이 와야 한다. 따라서 길이가 i-1이고 마지막 글자가 8인 dp[i-1][8]의 값으로 갱신한다. dp[i][9] = dp[i-1][8] 0과 9 이외에는 마지막에서 두번째에 올 수 있는 수는 마지막 수..
[Python | 파이썬] 백준 11053 가장 긴 증가하는 부분 수열 [Python | 파이썬] 백준 11053 가장 긴 증가하는 부분 수열 모든 인덱스에 대해 처음에는 자기자신 1개를 원소로 갖는 부분 수열의 길이 1을 최대 lcs의 길이로 한다. 그리고 0부터 각 인덱스-1까지 j를 증가하며 인덱스 j의 원소가 i번째 원소보다 작다면 dp[i] = max(dp[i], dp[j]+1) 로 초기화한다. 더보기 n = int(input()) arr = list(map(int, input().split())) dp = [1] * n for i in range(1, n): for j in range(i): if arr[i] > arr[j]: dp[i] = max(dp[i], dp[j]+1) print(max(dp)) https://www.acmicpc.net/problem/11..
[Python | 파이썬] 백준 11054 가장 긴 바이토닉 부분 수열 [Python | 파이썬] 백준 11054 가장 긴 바이토닉 부분 수열 이 문제는 앞에서부터 증가하는 부분 수열의 최대 길이를 구하고, 뒤에서부터 증가하는 부분 수열의 최대 길이를 구하여 각각 dp와 r_dp 배열에 저장한다. 예를 들어 1 2 3 5 4 2 1 배열에서 1,2,3,5 로 증가하는 부분 수열의 길이인 dp[3] = 4 5,4,2,1로 감소하는 부분 수열의 길이인 r_dp[7-1-3] = 4 의 합이 가장 크다. 이때 5는 반복되므로 4 + 4 - 1을 해줬을때 1, 2, 3, 5, 4, 2, 1로 전체 배열의 길이가 최대가 된다. 주의할 점은 dp와 r_dp의 합을 구할 때 같은 인덱스에 대해서 합을 계산해야 하므로, reversed된 배열인 r_d는 0부터 n-1까지 증가하는 인덱스 i..
[Python | 파이썬] 백준 12865 평범한 배낭 [Python | 파이썬] 백준 12865 평범한 배낭 배낭문제는 물건의 무게를 저장하는 배열 weight와 가치를 저장하는 배열 value를 각각 준비한다. 최대 담을 수 있는 무게가 k이고 물건의 개수가 n이라고 한다. dp배열은 행의 수를 각 물건의 개수 + 1으로 하고 열의 수를 배낭이 담을 수 있는 최대 무게 + 1로 한다. 만약 물건이 무게와 가치가 3, 10이라면 아래와 같다. 1 < 3, 2< 3이므로 dp[i][j] = dp[i-1][j]인 0이 된다. 3
[Python | 파이썬] 백준 1912 연속합 [Python | 파이썬] 백준 1912 연속합 이 문제는 현재까지 누적된 값의 최대값을 저장해두는 배열 sumarr을 준비하고, 만약 sumarr에 가장 최근에 저장된 값에 현재 인덱스에 해당하는 값을 추가한 값이 더 크다면 sumarr에 그 누적합을 저장하고, 그렇지 않다면 현재 인덱스에 해당하는 값 자체를 저장한다. 즉 현재값이 현재 값을 포함해 누적된 값의 합보다 크다면 현재값부터 누적합을 다시 세기 시작하는 것이다. sumarr[i+1] = max(sumarr[i] + arr[i+1], arr[i+1]) 이 된다. 더보기 n = int(input()) arr = list(map(int, input().split())) sumarr = [arr[0]] for i in range(n-1): suma..