dp 23

[백준] 2178 미로 탐색, python, C

www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) matrix = [input() for _ in range(N)] visit = [[0] * M for _ in range(N)] def bfs(r, c): q = deque() q.append((r, c)) visit[r][c] = 1 delta = [(-1, 0..

STUDY/Algorithm 2021.04.27

[백준] 2156 포도주 시식, python

www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net n = int(input()) wine = [0] + [int(input()) for _ in range(n)] dp = [0] * (n + 1) # 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. # 최대 두잔 연속 dp[1] = wine[1] if n >= 2: dp[2] = max(wine[1]+wine[2], dp[0] + wine[2]) for i in range(3, n + 1): dp[i] = ma..

STUDY/Algorithm 2021.04.26

[백준] 11053 가장 긴 증가하는 부분 수열 python

www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net n = int(input()) arr = [0] + list(map(int, input().split())) dp = [0] * (n + 1) for i in range(1, n + 1): max_val = 0 for j in range(i): if arr[j] < arr[i] and max_val < dp[j]: max_val = ..

STUDY/Algorithm 2021.04.26

[프로그래머스] LEVEL3 정수삼각형, python

programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr def solution(triangle): dp = [[0] * i for i in range(1, len(triangle) + 1)] dp[0][0] = triangle[0][0] for i in range(1, len(dp)): for j in range(len(dp[i])): if j == 0: dp[i][j] = triangle[i][j] + dp[i - 1][j] elif j == len(dp[i]) - 1: dp[i][j] = triangl..

STUDY/Algorithm 2021.04.22

[백준] 10844 쉬운계단수 python

www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net n = int(input()) dp = [[0] * 10 for _ in range(101)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n + 1): for j in range(10): if j == 0: dp[i][j] = dp[i - 1][1] elif j == 9: dp[i][j] = dp[i - 1][8] else: dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j + 1] print(sum(dp[n]) % 1000000000) dp[5]..

STUDY/Algorithm 2021.04.13

[백준] 2579 계단오르기 python

www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net n = int(input()) stair = [0] + [int(input()) for _ in range(n)] if n == 1: print(stair[-1]) else: dp = [0] * (n + 1) dp[0] = stair[0] dp[1] = max(stair[0] + stair[1], stair[1]) dp[2] = max(stair[0] + stair[2], stair[1] + stair[2]) for i i..

STUDY/Algorithm 2021.04.13

[백준] 12851 숨바꼭질 2 python

www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net from collections import deque n, k = map(int, input().split()) if n == k: print(0) print(1) else: dp = [0] * 100001 q = deque([n]) dp[n] = 1 size, depth, cnt = len(q), 0, 0 if_chk = True limit = 100000 result_v..

STUDY/Algorithm 2021.03.29

[백준] 1697 숨바꼭질 python

www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net from collections import deque n, k = map(int, input().split()) dp = [0] * 100001 q = deque([n]) dp[n] = 1 while q: x = q.popleft() if 0

STUDY/Algorithm 2021.03.29

[백준] 1149 RGB거리

www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net N = int(input()) total = [[0]*3 for _ in range(N + 1)] for i in range(1, N + 1): x, y, z = list(map(int, input().split())) if i == 1: total[i] = [x, y, z] else: total[i][0] = min(total[i - 1][1], total[i - 1][2]) + x to..

STUDY/Algorithm 2021.03.23

[백준] 9461 파도반 수열

www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net dp = [0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9] for tc in range(int(input())): N = int(input()) for i in range(len(dp), N + 1): dp.append(dp[i - 1] + dp[i - 5]) print(dp[N]) dp 문제라고 하기엔 너무 쉽다. 내가 원한건 이런문제가 아니었는데... 쉬운건 빠르게 넘어가야겠다

STUDY/Algorithm 2021.03.23