J

upper bound, lower bound : ์ด๋ถ„ํƒ์ƒ‰ ๋ณธ๋ฌธ

๐Ÿ”‘ Problem Solving/๐Ÿฅ• Algorithm

upper bound, lower bound : ์ด๋ถ„ํƒ์ƒ‰

snowball๐Ÿฐ 2023. 4. 3. 12:09

๐Ÿ“Œ Lower Bound(์ƒ๊ณ„)

์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ set์—์„œ K๊ฐ’ ์ด์ƒ์ด ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋˜๋Š” ์œ„์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ“Œ Upper Bound(ํ•˜๊ณ„)

์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ set์—์„œ K๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’์ด ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋˜๋Š” ์œ„์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ’ก ์˜ˆ๋ฅผ ๋“ค์–ด
1 2 2 3 3 3 4 5 ์˜ ๋ฐ์ดํ„ฐ set์—์„œ
lower bound(3) = 3, upper bound(3) = 6
@ ๋ฐ์ดํ„ฐ set์˜ index๋Š” 0์—์„œ๋ถ€ํ„ฐ, lower bound(์ฐพ๊ณ ์ž ํ•˜๋Š” ์ˆซ์ž = K)

โœ… ์ด๋ถ„ ํƒ์ƒ‰์„ ์ด์šฉํ•˜์—ฌ upper bound, lower bound๋ฅผ ๊ตฌํ•ด ๋ณด์ž!

## lower bound
int start = 0; int end = N-1;
while(start <= end) {
	int mid = (start + end) / 2;
	if(set[mid] < K) start = mid + 1;
	else end = mid - 1;
}

System.out.println(start);

์ด๋•Œ, start๋Š” K๊ฐ’์ด ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ณณ! (index)

## upper bound
int start = 0; int end = N-1;
while(start <= end) {
	int mid = (start + end) / 2;
	if(set[mid] <= K) start = mid + 1;
	else end = mid - 1;
}

System.out.println(end);

์ด๋•Œ, end๊ฐ€ K๊ฐ’์ด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ณณ!

๐Ÿ’ก ์ด๋ถ„ํƒ์ƒ‰์€ ๋‘ ๊ทธ๋ฃน์„ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„๋А๋ƒ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค.
lower bound๋Š” (์ž‘์€) (ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€)์œผ๋กœ ๋‚˜๋ˆ„์—ˆ๊ณ  upper bound๋Š” (์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€) (ํฐ) ์œผ๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์€ ‘๊ฐ™์€’์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค!
lower bound๋Š” ๊ฒฐ๊ตญ ๋‘ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ฐ’์—์„œ ์ข…๋ฃŒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ชฝ(end)์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. start = end + 1์—์„œ ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— start์˜ ๊ฐ’์ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ๋œ๋‹ค.
upper bound๋Š” start์— ๊ฐ’์ด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ start๋Š” ๋งˆ์ง€๋ง‰์— +1์ด ๋˜์–ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— end์˜ ๊ฐ’์ด ์ •๋‹ต์ด ๋œ๋‹ค.

 

## ๋ฌธ์ œ ์ถ”์ฒœ

https://www.acmicpc.net/problem/2143

 

2143๋ฒˆ: ๋‘ ๋ฐฐ์—ด์˜ ํ•ฉ

์ฒซ์งธ ์ค„์— T(-1,000,000,000 ≤ T ≤ 1,000,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” n(1 ≤ n ≤ 1,000)์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ๋‹ค์Œ ์ค„์— n๊ฐœ์˜ ์ •์ˆ˜๋กœ A[1], …, A[n]์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” m(1 ≤ m ≤ 1,000)์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ

www.acmicpc.net

 

Comments