[백준 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))
참고
728x90
반응형
'백준' 카테고리의 다른 글
[백준 1157번] 단어 공부 (python) (0) | 2020.12.24 |
---|---|
[백준 9251번] LCS (파이썬, 최장 공통 부분 수열, DP) (0) | 2020.12.21 |
[백준] 1010번 다리놓기 (실버) (0) | 2020.12.21 |
[백준] 팰린드롬 만들기 (1254번, 파이썬) (0) | 2020.12.16 |
[백준 2644번] 촌수계산 (python, dfs) (0) | 2020.11.26 |
TAGS.