[Python] 최장 연속 부분 수열
1. 숫자가 동일한 연속 부분 수열 - 연속 부분 수열이란 어떤 수열에서 특정 구간에 속하는 수들을 모두 뽑았을 때 나오는 부분 수열이다. - 연속해서 나오는 같은 숫자를 한 묶음이라 할 때, 총 몇 개의 묶음이 나오는지 구하라. - 수열은 다음과 같다. - 수열에서 [1,1,1], [2,2], [3,3,3,3], [2] 총 4개의 묶음이 있다는 것을 알 수 있다. - 그림에서 빨간색 테두리는 새로운 묶음이 시작되는 index이다. - 따라서 새로운 묶음이 시작되는 index 개수가 답이 되는 것을 알 수 있다. - 새로운 묶음의 특징은 2가지가 있다. - 첫 번째, 직전에 나온 숫자와 다른 숫자가 나왔다. - 두 번째, index가 0일 때 시작된다. - 2가지 조건에 만족하면 개수를 증가시킨다. ar..
2023. 11. 11.
[Python] 특정 구간의 개수 구하기 - 겹치는 지점, 겹치는 구간
1. 겹치는 지점 구하기 - 3개의 선분은 각각 [2, 6], [3, 8], [6, 9] 구간에 놓여 있다. - 가장 많이 겹치는 지점과 개수를 구하기 위해서 어떻게 해야 할까? - 위 그림에서 겹치는 개수는 1개이고 지점은 6이다. - 코드로 나타내면 다음과 같다. n = int(input()) max_point = -1 arr = [] # 구간을 입력. 끝점의 최대값을 구함. 구간들을 리스트에 삽입 for _ in range(n): x, y = map(int, input().split()) max_point = max(max_point, y) arr.append((x, y)) # 끝점의 최대값의 크기만큼 0인 원소의 리스트를 생성 points = [0 for _ in range(max_point+1)..
2023. 10. 29.