[백준 1059번] 좋은 구간 (실버 5)

728x90
반응형

어렵다.. 수학적 계산 들어가는 문제는 다 어렵다ㅠㅠ 어떡하지

 

a= s 집합이다 

집합 가장 앞에 0을 추가하여 예외 상황 (s집합이 1개일 때, s집합에 있는 수보다 n이 작을 때 등)을 처리해준다

 

s집합의 원소보다 n이 작다면 right=원소-1 이고 n이 더 크다면 다음 구간도 가능한 지 찾는다 left=원소+1

 

1 2 3 4 5 에서 left=1, right=5, n= 3이라면 

가능한 경우의 수는 3을 포함하는 경우의 수 right-left (4가지이고) (1,3) (2,3) (3,4) (3,5)

3이 경계값이 아닌 포함하는 구간은 (n-left)*(right-n)이다 

(1,4) (1,5) (2,4) (2,5)

 

import sys
input=sys.stdin.readline

l=int(input())
a=list(map(int,input().split()))
a=[0]+a
a.sort()
n=int(input())

left=0
right=0
if n in a:
    print(0)
    sys.exit()

for x in a:
    if n>x:
        left=x+1
    else:
        right=x-1
        break
print(left,right)
print(right-left+(right-n)*(n-left))


 

참고

claude-u.tistory.com/400

jaimemin.tistory.com/1435

728x90
반응형
TAGS.

Comments