본문 바로가기
반응형

lis6

(Python/플5)백준 알고리즘 14003번: 가장 긴 증가하는 부분 수열 문제바로가기  문제:수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.입력:첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000)출력:첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 둘째 줄에는 정답이 될 수 있는 가장 긴 증가하는 부분 수열을 출력한다. 풀이: 시간 초과 코드import sysN = int(sys.stdin.. 2024. 8. 14.
(Python/🥈2)백준리즘알고리즘 11722번: 가장 긴 감소하는 부분 수열 문제 바로가기 문제:수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다.입력:첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력:첫째 줄에 수열 A의 가장 긴 감소하는 부분 수열의 길이를 출력한다. import syssys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')n = int(input())lst = list(map.. 2024. 5. 18.
(Python/🥇4)백준알고리즘 10942번: 팰린드롬? 문제 바로가기 문제: 명우는 홍준이와 함께 팰린드롬 놀이를 해보려고 한다. 먼저, 홍준이는 자연수 N개를 칠판에 적는다. 그 다음, 명우에게 질문을 총 M번 한다. 각 질문은 두 정수 S와 E(1 ≤ S ≤ E ≤ N)로 나타낼 수 있으며, S번째 수부터 E번째 까지 수가 팰린드롬을 이루는지를 물어보며, 명우는 각 질문에 대해 팰린드롬이다 또는 아니다를 말해야 한다. 예를 들어, 홍준이가 칠판에 적은 수가 1, 2, 1, 3, 1, 2, 1라고 하자. S = 1, E = 3인 경우 1, 2, 1은 팰린드롬이다. S = 2, E = 5인 경우 2, 1, 3, 1은 팰린드롬이 아니다. S = 3, E = 3인 경우 1은 팰린드롬이다. S = 5, E = 7인 경우 1, 2, 1은 팰린드롬이다. 자연수 N개와.. 2023. 7. 24.
(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/🥇4)백준알고리즘 2565번: 전깃줄 전깃줄 바로가기 문제: 두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다. 예를 들어, 과 같이 전깃줄이 연결되어 있는 경우 A의 1번 위치와 B의 8번 위치를 잇는 전깃줄, A의 3번 위치와 B의 9번 위치를 잇는 전깃줄, A의 4번 위치와 B의 1번 위치를 잇는 전깃줄을 없애면 남아있는 모든 전깃줄이 서로 교차하지 않게 된다. 전깃줄이 전봇대에 연결되는 위치는 전봇대 위에서부터 차례대로 번호가 매겨진다. 전깃줄의 개수와 전깃줄들이 두 전봇대에 연결되는 위치의 번호가 주어질 때, 남아있는 모든 전깃줄이 서로 교차하지 않게 하기 위해 없애야 하는 .. 2023. 6. 13.
LIS 최장증가수열 최장증가수열이란 : 가장 긴 증가하는 수열을 말한다. [1,4,3,6,4,8] 이런식으로 주어졌을때 가장 긴 증가하는 수열은 [1,3,4,8] 4이다. 이러한 문제를 풀때는 dp를 사용하여야 하는데, 각 idx까지의 최장증가 수열을 dp에 저장하는 것이다. 주어진 idx 보다는 작지만 가장 긴 수열에 + 1을 해주면된다. idx 가 0 일때 는 dp[0] = 1 1일때는 dp[1] = 2 dp[2] = 2 dp[3] = 3 dp[4] = 3 dp[5] = 4 이렇게 하려면 이중 포문을 사용해야한다. for i in range(N): for j in range(i): if lst[i] > lst[j]: dp[i] = max(dp[i], dp[j] + 1) 그것을 식으로 나타나면 이렇게 된다. 기본문제: h.. 2023. 6. 13.
반응형