본문 바로가기
반응형

백준알고리즘/동적 계획법175

(Python/🥇4)백준알고리즘 9251번: LCS 문제바로가기 문제: LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 문입력: 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력: 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r') sys.setrecursionlimit(10**6) lst1 = [ i for i in sys.stdin... 2023. 6. 13.
(Python/🥇5)백준알고리즘 11054번: 가장 긴 바이토닉 부분 수열 문제 바로가기 문제 : 수열 S가 어떤 수 Sk를 기준으로 S1 Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다. 수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 프로그램을 작성하시오 입려 : 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000.. 2023. 6. 13.
(Python/🥇4)백준알고리즘 2565번: 전깃줄 전깃줄 바로가기 문제: 두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다. 예를 들어, 과 같이 전깃줄이 연결되어 있는 경우 A의 1번 위치와 B의 8번 위치를 잇는 전깃줄, A의 3번 위치와 B의 9번 위치를 잇는 전깃줄, A의 4번 위치와 B의 1번 위치를 잇는 전깃줄을 없애면 남아있는 모든 전깃줄이 서로 교차하지 않게 된다. 전깃줄이 전봇대에 연결되는 위치는 전봇대 위에서부터 차례대로 번호가 매겨진다. 전깃줄의 개수와 전깃줄들이 두 전봇대에 연결되는 위치의 번호가 주어질 때, 남아있는 모든 전깃줄이 서로 교차하지 않게 하기 위해 없애야 하는 .. 2023. 6. 13.
(Python/🥈1)백준 알고리즘 1105번:가장 긴 증가하는 부분 수열 문제 바로가기 문제 : 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 : 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 : 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 처음에는 import sys N = int(sys.stdin.readline()) lst = [int(i) for i in sys.stdin.readline().split(".. 2023. 6. 13.
(Python/🥈1)백준 알고리즘 2156번: 포도주 시식 계단 오르기 바로가기 문제 : 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을.. 2023. 6. 12.
(Python/🥈4)백준 알고리즘 10844번: 쉬운 계단수 문제 바로가기 문제: 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력: 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력: 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 처음에 문제를 이해하지 못했다. N만큼의 간격을 유지한다는줄 알았지만. 하다보니 길이가 N이다 1이면 일의자리 2이면 십의자리 ,,, 이차원 리스트를 사용하여 dp를 늘려야한다. 근데 차이가 1이 나야하니깐 1과 9 빼고는 (-1,+1) 로 갈수 있고 1과 9 는 0과 8 밖에 못간다. 그 외는 위 아래.. 2023. 6. 12.
반응형