๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š ์ „๊ณต ๊ณต๋ถ€/๋ฌธ์ œํ•ด๊ฒฐ๊ธฐ๋ฒ•

[๋ฌธ์ œํ•ด๊ฒฐ๊ธฐ๋ฒ•] 4. ์ž๋ฃŒ๊ตฌ์กฐ2

1. ํŠธ๋ฆฌ ์ง€๋ฆ„

ํŠธ๋ฆฌ์˜ ๋‘ ์ •์  u, v์˜ ๊ฑฐ๋ฆฌ์˜ ์ตœ๋Œ“๊ฐ’

 

(1) O(n^3) : brute force

(2) O(n^2) : u๋ฅผ ๊ณ ์ •ํ•˜๊ณ  bfsํ•œ๋‹ค.

(3) O(n)

ํŠธ๋ฆฌ์—์„œ ์ž„์˜์˜ ์ •์  x๋ฅผ ์„ ํƒํ•˜๊ณ  x์—์„œ ๊ฐ€์žฅ ๋จผ ์ •์  y๋ฅผ ์ฐพ๋Š”๋‹ค.(bfs)

์ดํ›„ y์—์„œ ๊ฐ€์žฅ ๋จผ ์ •์  z๋ฅผ ์ฐพ๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฉด y์™€ z๊ฐ€ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋Š” ์ •์  ์Œ์ด๋‹ค.

 

์ฆ๋ช…

์›ํ•˜๋Š” ๋‹ต์ด ๋‘ ์ •์  u์™€ v์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด 3๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”๋ฐ, x์—์„œ ๊ฐ€์žฅ ๋จผ ์ ์ด y๋ผ๊ณ  ํ•˜๋ฉด

(1) x = u / x = v

(2) y = u / y = v

(3) x,y,u,v ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

 

(1)๊ณผ (2)๋Š” ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋‹ต์ด ๋งž๋‹ค๋Š” ๊ฒƒ์ด ์ž๋ช…ํ•˜๋‹ค. (3)์˜ ๊ฒฝ์šฐ๋Š” u~y ๊ฒฝ๋กœ์™€ u~v ๊ฒฝ๋กœ๊ฐ€ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ด์™ธ์—๋Š” ์—†์–ด์•ผ ํ•œ๋‹ค.

 

x,y,u,v๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•˜์ž. ๊ทธ๋Ÿฌ๋ฉด x~y์˜ ๊ฒฝ๋กœ์™€ u~v์˜ ๊ฒฝ๋กœ๊ฐ€ ๊ต์  t๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.

๋งŒ์•ฝ ๊ต์  t๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, t~y๊ฐ€ t~u, t~v๋ณด๋‹ค ๋ฉ€์–ด์•ผ ํ•œ๋‹ค. (x~y๊ฐ€ ๊ฐ€์žฅ ๋ฉ€์–ด์•ผ ํ•˜๋ฏ€๋กœ)

๊ทธ๋ ‡๋‹ค๋ฉด, u~t~y๊ฐ€ u~t~v๋ณด๋‹ค ๋ฉ€๋‹ค. ์ด๋Š” u~v๊ฐ€ ๋‹ต์ด๋ผ๋Š” ๊ฐ€์ •์— ๋ชจ์ˆœ์ด๋‹ค.

 

๊ต์ ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ •์˜์ƒ a~y๊ฐ€ a~b~u, a~b~v๋ณด๋‹ค ๋ฉ€๋‹ค. (x~y๊ฐ€ ๊ฐ€์žฅ ๋ฉ€์–ด์•ผ ํ•˜๋ฏ€๋กœ)

u~v์™€ u~y๋ฅผ ๋น„๊ตํ•˜๋ฉด, u~b๋Š” ๊ณตํ†ต์ด๋ฏ€๋กœ b~a~y์™€ b~v๋ฅผ ๋น„๊ตํ•  ๋•Œ a~y๊ฐ€ a~b~v๋ณด๋‹ค ๋ฉ€์–ด์•ผ ํ•˜๋ฏ€๋กœ b~a~y๊ฐ€ b~v๋ณด๋‹ค ๋ฉ€๊ณ ,

u~v๊ฑฐ๋ฆฌ๊ฐ€ u~y๋ณด๋‹ค ์งง์•„์•ผ ํ•œ๋‹ค. ์ด๋Š” u~v๊ฐ€ ๋‹ต์ด๋ผ๋Š” ๊ฐ€์ •์— ๋ชจ์ˆœ์ด๋‹ค.

 

 

2. ์—ฐ์Šต๋ฌธ์ œ : ์ „๋„

 

์ตœ๊ต์ˆ˜๋Š” ์ „๋ฅ˜๊ฐ€ ํ†ตํ•˜๋Š” ์ƒˆ๋กœ์šด ์†Œ์žฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค. ์ด ์†Œ์žฌ์˜ ๋‹จ๋ฉด์€ M x N ๊ฒฉ์ž ํ˜•ํƒœ์ธ๋ฐ, ๊ฒฉ์ž์˜ ์œ—๋ฉด์€ ์™ธ๋ถ€์ด๊ณ  ๊ฒฉ์ž์˜ ์•„๋žซ๋ฉด์€ ๋‚ด๋ถ€๋ผ๊ณ  ํ•˜์ž. ๊ฒ€์€์ƒ‰ ์นธ์€ ์ „๋ฅ˜๋ฅผ ์ ˆ์—ฐํ•˜๊ณ , ํฐ์ƒ‰ ์นธ์€ ์ „๋ฅ˜๊ฐ€ ํ†ตํ•œ๋‹ค. ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€๋กœ ์„œ๋กœ ์ธ์ ‘ํ•œ ํฐ ์นธ์„ ํ†ตํ•ด์„œ ์ „๋ฅ˜๊ฐ€ ํ๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๊ฐ์„ ์œผ๋กœ ์ธ์ ‘ํ•œ ํฐ ์นธ๋ผ๋ฆฌ๋Š” ์ „๋ฅ˜๊ฐ€ ํ†ตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ „๋ฅ˜๊ฐ€ ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€๋กœ ํ๋ฅผ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์™ผ์ชฝ ๊ทธ๋ฆผ์€ ์ „๋ฅ˜๊ฐ€ ํ†ตํ•˜๋Š” ๊ฒฝ์šฐ์ด๊ณ  ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์€ ์ „๋ฅ˜๊ฐ€ ํ†ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

-> bfs / dfs ๋กœ ํ’€์ด ๊ฐ€๋Šฅ

 

 

3. ๊ณผ๋ฐ˜์ˆ˜ ์ฐพ๊ธฐ

์ •์ˆ˜ ๋ฐฐ์—ด A[n]์—์„œ n/2๋ฒˆ ์ด์ƒ ๋‚˜์˜ค๋Š” ์›์†Œ x๋ฅผ ์ฐพ๊ธฐ.

 

(1) O(n^2) : brute force๋กœ ๊ฐ ์›์†Œ๋งˆ๋‹ค ์ž๊ธฐ ๋’ค์— ๋‚˜์˜ค๋Š” ํšŸ์ˆ˜๋ฅผ ์„ธ์–ด๋ณธ๋‹ค.

(2) O(n log n)

- ๋ฐฐ์—ด์„ ์ •๋ ฌ ํ›„ ์ฐจ๋ก€๋Œ€๋กœ ์›์†Œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ๋ฐ”๋กœ ์ง์ „ ์›์†Œ์™€ ๊ฐ™์€์ง€ ๋น„๊ตํ•œ๋‹ค.

- ์ •๋ ฌ์— O(n log n), ์›์†Œ๋ฅผ ์ฝ๋Š” ๋ฐ์— + O(n)

(3) O(n)

๊ทธ๋ฃน์˜ ๋งจ ์ฒ˜์Œ ์›์†Œ์˜ ์ˆ˜ = ๋‹ค๋ฅธ ์›์†Œ์˜ ์ˆ˜๊ฐ€ ๋˜๋„๋ก ๊ทธ๋ฃน์„ ๋‚˜๋ˆˆ๋‹ค.

๋งŒ์•ฝ ๊ณผ๋ฐ˜์ˆ˜๋กœ ๋‚˜์˜ค๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ทธ๋ฃน์˜ ๋งจ ์•ž ๊ฐ’์ด๋‹ค.

์ฒซ๋ฒˆ์จฐ ์›์†Œ๋Š” ๋น„๊ต๋˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ์›์†Œ๋“ค์€ ์ตœ๋Œ€ n-1๋ฒˆ ๋‹ค๋ฅธ ์›์†Œ์™€ ๋น„๊ต๋œ๋‹ค.

๋งˆ์ง€๋ง‰ ๊ทธ๋ฃน์˜ ์ฒซ ์›์†Œ๊ฐ€ ๊ณผ๋ฐ˜์ˆ˜์ธ์ง€ ์ ๊ฒ€ํ•˜๋Š”๋ฐ์— n-1๋ฒˆ ๋น„๊ต. ์ด O(n) ์‹œ๊ฐ„.

 

- ์ฃผ์žฅ : n๊ฐœ์˜ ์›์†Œ ์ค‘ ๊ณผ๋ฐ˜์ˆ˜์ธ ์›์†Œ๊ฐ€ x๋ผ๊ณ  ํ•˜๋ฉด, ์œ„ ๋ฐฉ๋ฒ• ์ดํ›„ ๋งจ ์™ผ์ชฝ ํ•œ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•˜๋”๋ผ๋„ ๋‚จ์€ ์›์†Œ ์ค‘ ๊ณผ๋ฐ˜์ˆ˜์ธ ์›์†Œ๋Š” x์ด๋‹ค.

- ์ฆ๋ช…

์ฒซ๋ฒˆ์งธ ์›์†Œ๋Š” x์ด๊ฑฐ๋‚˜ x๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ฒซ๋ฒˆ์งธ ์›์†Œ๊ฐ€ x๋ผ๋ฉด, x๊ฐ€ ๋‚˜์˜จ ํšŸ์ˆ˜๋งŒํผ ๋‹ค๋ฅธ ์›์†Œ๋“ค์ด ์ฒซ ๊ทธ๋ฃน์— ํฌํ•จ๋œ๋‹ค.

๊ฐ™์€ ํšŸ์ˆ˜๋งŒํผ x์™€ ๋‹ค๋ฅธ ์›์†Œ๋“ค์ด ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ๋‚จ์€ ์›์†Œ ์ค‘ ์—ฌ์ „ํžˆ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด x์ด๋‹ค.

์ฒซ๋ฒˆ์งธ ์›์†Œ๊ฐ€ x๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ์ฒซ ์›์†Œ๋ฅผ y๋ผ๊ณ  ํ•˜์ž.

x๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์ œ๊ฑฐ๋˜๋Š” ๊ฒฝ์šฐ๋Š” yyyyxxxx ๊ฐ™์€ ๊ฒฝ์šฐ์ธ๋ฐ,

์ด ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๊ฐ™์€ ํšŸ์ˆ˜๋งŒํผ x์™€ ๋‹ค๋ฅธ ์›์†Œ๋“ค์ด ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ๋‚จ์€ ์›์†Œ ์ค‘ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด x์ด๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

 

(4) O(n)

๊ณผ๋ฐ˜์ˆ˜์˜ ์›์†Œ๊ฐ€ m์ด๋ผ๊ณ  ํ•˜๊ณ , ๊ฐ ์›์†Œ๋งˆ๋‹ค ์ž์‹ ์ด m์ด๋ฉด count += 1, ์•„๋‹ˆ๋ผ๋ฉด count -= 1์„ ํ•ด์ค€๋‹ค.

๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด count ๊ฐ’์ด ์–‘์ˆ˜์ด๋‹ค.