📝 문제
💡 정수 집합 S가 주어졌을때, 다음 조건을 만족하는 구간 [A, B]를 좋은 구간이라고 한다.
A와 B는 양의 정수이고, A < B를 만족한다.
A ≤ x ≤ B를 만족하는 모든 정수 x가 집합 S에 속하지 않는다.
집합 S와 n이 주어졌을 때, n을 포함하는 좋은 구간의 개수를 구해보자.
⚙️ 입력 : 첫째 줄에 집합 S의 크기 L이 주어진다.
둘째 줄에는 집합에 포함된 정수가 주어진다.
셋째 줄에는 n이 주어진다.
⚙️ 출력 : 첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다.
1059번: 좋은 구간
[9, 10], [9, 11], [9, 12], [10, 11], [10, 12]
www.acmicpc.net
✅ 풀이
l = int(input())
s = list(map(int, input().split()))
n = int(input())
maxmin = 1
minmax = 1000
s.sort()
for item in s:
if item <= n:
maxmin = max(maxmin, item)
elif item >= n:
minmax = min(minmax, item)
cnt = 0
if maxmin in s:
maxmin += 1
for i in range(maxmin, n+1):
for j in range(n, minmax):
if i==j:
continue
cnt += 1
print(cnt)
💡 우선 주어진 숫자보다 작은 수 중 가장 큰 수와, 큰 수 중 가장 작은 수를 구했다.
그 다음 maxmin이 주어진 수열에 있는 경우, 그 다음 수부터 진행하기 위해 +1을 했다.
반복문을 돌며 [maxmin, n]부터 [n, minmax]까지 좋은 구간의 갯수를 셌다.