PS/백준 [백준/11722] 가장 긴 감소하는 부분 수열 (Python) - Problem : https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net Difficulty : Silver 2 Status : Solved Time : 00:05:48 문제 설명 더보기 수열 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의 가장 긴 감소하는 부분 수열의 길이를 출력한다. 입력 예시 6 10 30 10 20 20 10 출력 예시 3 풀이 2023.06.03 - [알고리즘 문제/백준] - [백준/11055] 가장 큰 증가하는 부분 수열 (Python) [백준/11055] 가장 큰 증가하는 부분 수열 (Python) Problem : https://www.acmicpc.net/problem/11055 Difficulty : Silver 2 Status : Solved Time : 00:13:25 문제 설명 더보기 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램 magentino.tistory.com 위 문제와 동일하다! 풀이 코드 N = int(input()) num_list = list(map(int, input().split())) answer_list = list() def binary_search(num) : start, end = 0, len(answer_list) while start < end : mid = (start + end) // 2 if num < answer_list[mid] : start = mid + 1 else : end = mid return end for num in num_list : idx = binary_search(num) if idx == len(answer_list) : answer_list.append(num) else : answer_list[idx] = num print(len(answer_list)) 풀이 완료! 공유하기 게시글 관리 마젠티노's 저작자표시 비영리 동일조건 'PS > 백준' 카테고리의 다른 글 [백준/7476] 최대 공통 증가 수열 (Python) (0) 2023.09.20 [백준/1727] 커플 만들기 (Python) (0) 2023.09.19 [백준/1607] 원숭이 타워 (Python) (2) 2023.09.18 [백준/1771] 카드 묶음 (Python) (1) 2023.09.18 [백준/9470] Strahler 순서 (Python) (0) 2023.09.17 Contents 당신이 좋아할만한 콘텐츠 [백준/7476] 최대 공통 증가 수열 (Python) 2023.09.20 [백준/1727] 커플 만들기 (Python) 2023.09.19 [백준/1607] 원숭이 타워 (Python) 2023.09.18 [백준/1771] 카드 묶음 (Python) 2023.09.18 댓글 0 + 이전 댓글 더보기