Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DevDave

[Algorithm] BOJ11059(brute force)좋은구간 본문

Algorithm

[Algorithm] BOJ11059(brute force)좋은구간

Dave Song 2022. 6. 7. 14:01

문제

정수 집합 S가 주어졌을때, 다음 조건을 만족하는 구간 [A, B]를 좋은 구간이라고 한다.

  • A와 B는 양의 정수이고, A < B를 만족한다.
  • A ≤ x ≤ B를 만족하는 모든 정수 x가 집합 S에 속하지 않는다.

집합 S와 n이 주어졌을 때, n을 포함하는 좋은 구간의 개수를 구해보자.

입력

첫째 줄에 집합 S의 크기 L이 주어진다. 둘째 줄에는 집합에 포함된 정수가 주어진다. 셋째 줄에는 n이 주어진다.

출력

첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다.

제한

  • 1 ≤ L ≤ 50
  • 집합 S에는 중복되는 정수가 없다.
  • 집합 S에 포함된 모든 정수는 1보다 크거나 같고, 1,000보다 작거나 같다.
  • 1 ≤ n ≤ (집합 S에서 가장 큰 정수)

예제 입력 1 

4
1 7 14 10
2

예제 출력 1 

4

[2,3], [2,4], [2,5], [2, 6]

예제 입력 2

5
4 8 13 24 30
10

예제 출력 2 

5

[9, 10], [9, 11], [9, 12], [10, 11], [10, 12]

예제 입력 3 

5
10 20 30 40 50
30

예제 출력 3 

0

예제 입력 4 

8
3 7 12 18 25 100 33 1000
59

예제 출력 4 

1065

 

<Code>

import sys
from collections import deque

ans = 0
L = int(input())
input=sys.stdin.readline


s = list(map(int,input().split()))
s.sort()
s = deque(s)

n = int(input())
tmp1=0
tmp2=0

while s:
    k = s.popleft()
    if k == n:
        ans = 0
        break

    elif k < n:
        tmp1 = k
    elif k > n:
        tmp2 = k
        break

#print(tmp1,tmp2)

if(k!=n):
    ans=(n-tmp1)-1 +(tmp2-n)-1 + ((n-tmp1)-1)*((tmp2-n)-1)
    print(ans)
else:
    print(ans)







'Algorithm' 카테고리의 다른 글

[Algorithm]Dijkstra  (0) 2022.06.09
[Algorithm]boj1235(sil4)implement  (0) 2022.06.09
[Algorithm]Boj1417(greedy)국회의원선거  (0) 2022.06.08
[Algorithm]boj1010(dp)다리놓기  (0) 2022.06.07
[Algorithm] boj1343(greedy)폴리오미노  (0) 2022.06.07