Skip to content

97Fekim/Algorithm

Repository files navigation

Algorithm

๐Ÿ—

์˜ค๋‹ต๋…ธํŠธ

BOJ ํ’€์ด

LeetCode ํ’€์ด

Cos Pro 1๊ธ‰ ๋Œ€๋น„ ๋ฌธ์ œํ’€์ด

[์ž๋ฐ”(Java) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„] ,์ธํ”„๋Ÿฐ

๋งˆ๊ตฌ์žก์ด ์ •๋ฆฌ ๋…ธํŠธ

  • ์ •๋ ฌ๋œ ๋ฐฐ์—ด ์ˆœํšŒ์‹œ ์ด๋ถ„ ๊ฒ€์ƒ‰(Binary Search) ๊ณ ๋ คํ•˜๊ธฐ
/**
 * Collections.binarySearch ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ด๋ถ„ํƒ์ƒ‰์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
 */
// ์›์†Œ๊ฐ€ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
int index = collections.binarySearch(list, cur);
// ํ•ด๋‹น์›์†Œ๊ฐ€ ๋ฆฌ์ŠคํŠธ์— ์—†๋‹ค๋ฉด, ๋“ค์–ด๊ฐ€์•ผ ํ•  ์ž๋ฆฌ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ด๋•Œ index๊ฐ€ 3์ด๋ผ๋ฉด, (-3-1)์„ ๋ฆฌํ„ดํ•œ๋‹ค.
if (index < 0) {
    index = Math.abs(index + 1);
}
// ์ฐพ์•„๋‚ธ index์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
list.add(index, cur);
  • ๋ฌด์–ธ๊ฐ€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฆฌ์ŠคํŠธ ๊ณ ๋ คํ•˜๊ธฐ
  • ์Œ์„ ๋งž์ถฐ์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์ž, ์ˆ˜์‹์ด ์žˆ๋‹ค๋ฉด ์Šคํƒ ๊ณ ๋ คํ•˜๊ธฐ
  • ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋‹ค๋ฃฌ๋‹ค๋ฉด ํˆฌํฌ์ธํ„ฐ ๊ณ ๋ คํ•˜๊ธฐ
  • ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ตฌ๊ฐ„์”ฉ ๋‹ค๋ฃฐ๋•Œ, ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๊ณ ๋ คํ•˜๊ธฐ
  • ๋ฐฐ์—ด์—์„œ ๋ฒ”์œ„๊ฐ€ ์–ด๋Š์ •๋„ ์ •ํ•ด์ง„ ์ •๋‹ต์„ ๊ตฌํ•ด์•ผ ํ• ๋•Œ, ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋ คํ•˜๊ธฐ
  • ์†Œ์ˆ˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ผ๋ฉด ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์ด์šฉํ•˜๊ธฐ
  • ๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋ผ๋ฉด HashMap ์ด๋‚˜ HashSet ์ด์šฉํ•˜๊ธฐ
  • ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ผ๋ฉด GCD(Greate Common Devisior) ์ด์šฉํ•˜๊ธฐ
  • ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฐ˜๋ณต ํ˜ธ์ถœ๋˜๋Š” ์žฌ๊ท€ (์˜ˆ๋ฅผ๋“ค๋ฉด ํ”ผ๋ณด๋‚˜์น˜, ์กฐํ•ฉ, ๋“ฑ)๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ†ตํ•ด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • 2์ฐจ์›, 3์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰ ๋ฌธ์ œ๋Š” ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ๋‹ด์€ dx, dy ๋ฐฐ์—ด ์ด์šฉํ•˜๊ธฐ
  • BFS, DFS ๊ตฌํ˜„์‹œ check ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•ด ๋ฐœ์ƒํ•˜๋Š” NullPointerException ์ฃผ์˜.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆœ์„œ์Œ์ด ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ œ๋ผ๋ฉด, ํ•œ ์ข…๋ฅ˜๋ฅผ ์ •๋ ฌ ํ›„ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ คํ•˜๊ธฐ
  • ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์ด๋‚˜ ์ตœ๋Œ“๊ฐ’์„ ์ด์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ O(logn)์œผ๋กœ ์ค„์—ฌ์•ผ ํ•œ๋‹ค๋ฉด PrioriryQueue ์ด์šฉํ•˜๊ธฐ
  • ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ• ๋•Œ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋ คํ•˜๊ธฐ
  • ์„œ๋กœ์†Œ์ธ ์ง‘ํ•ฉ์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด Union & Find ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉํ•˜๊ธฐ
  • ์ตœ์†Œํ•œ์˜ ๊ฐ„์„  ๊ฐฏ์ˆ˜, ๊ฐ€์ค‘์น˜๋กœ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด ํฌ๋ฃจ์Šค์นผ์ด๋‚˜ ํ”„๋ฆผ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

Releases

No releases published

Packages

No packages published

Languages