dev_sia 2022. 11. 2. 23:33

1. ๋ฒ„๋ธ” ์ •๋ ฌ

  • ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์–ด๋–ป๊ฒŒ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • 2 1 3 5
  • ์œ„์™€ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ, ํฌ์ธํ„ฐ 1์€ 2๋ฅผ, ํฌ์ธํ„ฐ 2๋Š” 1์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ํฌ์ธํ„ฐ 1 > ํฌ์ธํ„ฐ 2 ์ผ ๋•Œ, ๋‘ ํ•ญ๋ชฉ์„ ๊ตํ™˜ํ•œ๋‹ค.
  • ํฌ์ธํ„ฐ๋“ค์€ ํ•œ ์นธ์”ฉ ์ด๋™ํ•˜๋ฉฐ ๋‘ ํ•ญ๋ชฉ์„ ๋น„๊ตํ•˜๊ณ  ํ•„์š”์‹œ ๋‘ ํ•ญ๋ชฉ์„ ๊ตํ™˜ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•œ ๋ฒˆ ๋ฐฐ์—ด ์ „์ฒด๋ฅผ pass throughํ•˜๊ณ  ๋‚˜๋ฉด, ๋‹ค์‹œ ๋งจ ์™ผ์ชฝ์œผ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ฒจ ๊ตํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

2. ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๊ตฌํ˜„

  • ์ƒ๋žต
  • ํŒŒ์ด์ฌ ์ฝ”๋“œ ์˜ˆ์˜๋‹ค

3. ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ํšจ์œจ์„ฑ

  • ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ค‘์š”ํ•œ ๋‹จ๊ณ„๋Š” ๋น„๊ต์™€ ๊ตํ™˜์ด๋‹ค.
  • ๋น„๊ต: ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ N์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, ๋น„๊ต๋Š” N - 1 + N - 2 + N - 3 + … + 1๋ฒˆ ์‹คํ–‰๋œ๋‹ค.
  • ๊ตํ™˜: ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด(์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค)์—์„œ ๊ตํ™˜์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋ฅผ ์…€ ๋•Œ๋Š” ๋น„๊ตํ•  ๋•Œ๋งˆ๋‹ค ๊ตํ™˜์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋น„๊ต์˜ ์‹คํ–‰ ํšŸ์ˆ˜์™€ ๊ฐ™๋‹ค.
  • ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋น„๊ต์™€ ๊ตํ™˜์˜ ํšŸ์ˆ˜๋Š” ๋Œ€๋žต N^2์ด๋‹ค.
  • O(N^2)

4. ์ด์ฐจ ๋ฌธ์ œ

  • O(N^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ O(N) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์— ์ค‘๋ณต๋˜๋Š” ์ˆซ์ž๊ฐ€ ๋“ค์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
  • for(i in 0 until list.size){ for(j in i + 1 until list.size){ if(list[i] == list[j]){ return true } } } return false
  • ์œ„ ์ฝ”๋“œ๋Š” O(N^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

5. ์„ ํ˜• ํ•ด๊ฒฐ๋ฒ•

var existingNum = IntArray()
for (i in 0 until arr.size){
	if(existingNum[arr[i]] == 1)
		return true
	else
		existingNum[arr[i]] = 1
}
return false
  • existingNum์ด๋ผ๋Š” ๋ฐฐ์—ด์— ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ์œ„ ์ฝ”๋“œ๋Š” O(N) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

6. ๋งˆ๋ฌด๋ฆฌ

  • ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ๋Œ€๋ถ€๋ถ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†๋„๋ฅผ ๋น„๊ตํ•˜๊ณ  ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํŒ๋ณ„์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • 5์žฅ์—์„œ๋Š” ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•˜๋Š”์ง€ ์‚ดํŽด๋ณธ๋‹ค.