๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’ป Computer Science/- Data Structure, Algorithm147

[์•Œ๊ณ ๋ฆฌ์ฆ˜-PS] 1์ดˆ์˜ ์‹œ๊ฐ„๋™์•ˆ CPU๊ฐ€ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ.(์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด์— ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•) PS๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ์ž…๋ ฅ N์— ๋Œ€ํ•œ ํฌ๊ธฐ์™€ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ด€๊ณ„๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ž˜ ํŒŒ์•…ํ•ด์•ผ ํ•ด๋‹น ๋ฌธ์ œ์— ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ํ•ฉํ• ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋Š˜์€ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์„ธ์„ธํ•œ ๋‚ด์šฉ๋ณด๋‹ค๋Š” ์‹ค์ „ PS ํŒŒํŠธ ์ด๋ฏ€๋กœ PS์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐ ๋˜๋Š”์ง€ ์ •๋ฆฌ๋ฅผ ํ•ด ๋ณด๊ฒ ๋‹ค. ์œ„๋Š” ๋ฐฑ์ค€์˜ ๋ฌธ์ œ์ค‘ ์ผ๋ถ€๋ฅผ ๋ฐœ์ทŒ ํ–ˆ๋Š”๋ฐ, ์œ„์˜ ๋ฌธ์ œ ์‹œ์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ณ„์‚ฐ ๋˜๋Š”์ง€ ๋ง ํ•ด๋ณด๊ฒ ๋‹ค. CPU์˜ 1์ดˆ๊ฐ„ ์—ฐ์‚ฐ ์†๋„ Cpu๋Š” 1์ดˆ๊ฐ„ ์•ฝ 1์–ต์˜ ์ˆ˜๋ฅผ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ N์— ๋Œ€ํ•ด์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n) ์ด๋ผ๋ฉด ์ž…๋ ฅ N์€ 0 2020. 3. 20.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ]๊ทธ๋ž˜ํ”„์˜ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - DFS(Stack)์™€ BFS(Queue) ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋…ธ๋“œ์˜ Data๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ ๋Œ€ํ‘œ์ ์ธ DFS, BFS๋ฅผ ํ•™์Šตํ•ด๋ณด์ž. ๊ทธ๋ž˜ํ”„ ๊ทธ๋ž˜ํ”„๋ž€? ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์œผ๋กœ ๋…ธ๋“œ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ ํ˜น์€ ๋น„์—ฐ๊ฒฐ ๋˜์–ด์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค. ์ง€๊ธˆ์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•˜๋Š” ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋„˜์–ด๊ฐ€์„œ ๋ฐ”๋กœ ๊ทธ๋ž˜ํ”„์˜ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ์•„๋ณด์ž. Depth-First-Search(DFS) ๊นŠ์ด ์šฐ์„  ๊ฒ€์ƒ‰์ธ DFS๋Š” Inorder Preorder* Postorder ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํฌํ•จ๋˜๋ฉฐ ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋กœ ๋๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๋ฉฐ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์„ ๋œปํ•œ๋‹ค. Breath-First-Search(BFS) ๋„“์ด ์šฐ์„  ๊ฒ€์ƒ‰์ธ BFS๋Š” ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ ์ž์‹ ์˜ ํ˜•์ œ๋…ธ๋“œ (Level) ๋‹จ์œ„๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋œปํ•œ๋‹ค. DFS์™€.. 2020. 3. 1.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-๋ฐฑ์ค€(DP)] ๋ฐฑ์ค€ 2748(DP), 10870(Recursive) ํ”ผ๋ณด๋‚˜์น˜์˜ ์ˆ˜ ์ฐจ์ด ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP, ๋™์  ๊ณ„ํš๋ฒ•, ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ’€์ด) ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •์˜์™€ ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค ๋™์  ๊ณ„ํš๋ฒ•์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด์™€ ์ด๋ก ์  ์„ค๋ช…์€ ์ถ”ํ›„์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก  ์—์„œ ๋‹ค๋ฃจ๊ธฐ๋กœ ํ•˜๊ฒ ๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์ด๋ž€? ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๋™์  ๊ณ„ํš๋ฒ•์— ํ‘œํ˜„์„ ํ•˜๊ณค ํ•œ๋‹ค. ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์žฌ ํ•ด๊ฒฐ ์ „๋žต์ด๋‹ค. ์ด๋Š” ๋ถ„ํ•  ์ •๋ณต๊ณผ ํŠน์ • ๋ฌธ์ œ์˜ ์žฌ๊ท€ ํ˜ธ์ถœ ๋น„์Šทํ•œ ๊ฐœ๋…์ด์ง€๋งŒ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization) ์„ ํ•˜๋А๋ƒ ์•ˆ ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ ธ๋‹ค๊ณ  ํ•œ๋‹ค. Memoization ๋ฉ”๋ชจ์ œ์ด์…˜์ด๋ž€, DP์—์„œ ์ž‘์€ ๋ฌธ์ œ๋“ค์ด ํ•ด๊ฒฐ๋  ๋•Œ ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋‹ค๋ฅธ ๋ถ€๋ถ„์˜ ๋™์ผํ•œ ๊ณ„์‚ฐ์—, ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ธฐ .. 2020. 3. 1.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-๋ฐฑ์ค€(์ •๋ ฌ)] ๋ฐฑ์ค€ 11650๋ฒˆ ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ ์ž๋ฐ” ๋ฌธ์ œํ’€์ด.(Comparable์„ ์ด์šฉํ•œ ๊ฐ์ฒด ๋น„๊ต, 2์ฐจ์› ๋ฐฐ์—ด ์ •๋ ฌ) ๋ฌธ์ œ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์˜ˆ์‹œ ๋ฌธ์ œ ์ดํ•ด ์ด ๋ฌธ์ œ๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐœ๋…์€ ๋‘ ๊ฐ€์ง€์˜ ํ•„๋“œ๋ฅผ ๋ฌถ์–ด์„œ ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ๋А๋ƒ ์ด๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‘๊ฐœ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค. 2์ฐจ์› ๋ฐฐ์—ด๋กœ์จ์˜ ํ’€์ด ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ comparable์„ ์ด์šฉํ•œ ํ’€์ด. ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ‘๊ทผ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ •๋ ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ฐ์ฒด์˜ ์ •๋ ฌ ๋ฐฉ์‹์„ ์žฌ์ •์˜ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™๋‹ค. ์†Œ์Šค ์ฝ”๋“œ package algorithm.class04_Sort; import java.util.*; public class Prob08_CoordinationSort { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n .. 2020. 2. 24.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-๋ฐฑ์ค€(์ •๋ ฌ)] ์ž๋ฐ” 1181๋ฒˆ ๋‹จ์–ด ์ •๋ ฌ ๋ฌธ์ œํ’€์ด. (Comparator์„ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ) ๋ฌธ์ œ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์˜ˆ์ œ ๋ฌธ์ œ ์ดํ•ด ๋ฌธ์ œ์— ๋ฐ”๋กœ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค ๋ผ๋Š” ๋ง์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋Š” ์ •๋ ฌ ๋ฌธ์ œ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ํ‘ผ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ ฌ ๊ธฐ์ค€์ด ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ ๋ถ€ํ„ฐ ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „์ˆœ์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์ •๋ ฌ์„ ํ•  ๋•Œ int์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ํ˜น์€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ํ–ˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ํŠน์ดํ•˜๊ฒŒ ๋ฌธ์ž์˜ ๊ธธ์ด๋ฅผ ์š”๊ตฌํ•˜๋ฏ€๋กœ ํ•ด๋‹น ์š”๊ตฌ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” Comparator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. comparator comparator์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์‚ฌ์šฉ๋ฒ• ์„ ํ†ตํ•ด์„œ ์‚ฌ์šฉ๋ฒ•์„ ์ˆ™์ง€ํ•˜์‹œ๊ณ  ์˜ค๋Š”๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด์—์š” :) ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ‘๊ทผ ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” str.length() ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „์ˆœ ์ •๋ ฌ .. 2020. 2. 24.
[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์Šคํ‚ฌ] ์ž๋ฐ” ์—์„œ Comparator, Comparable ๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ (๋žŒ๋‹ค๋ฅผ ์ด์šฉํ•ด์„œ ๊น”๋”ํ•˜๊ฒŒ ์žฌ์ •์˜ํ•˜๊ธฐ) Java์—์„œ comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ [Java ์‹ฌํ™”] Java ์—์„œ Comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ. Java์—์„œ comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ ์ž๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ๋Š” ์ •๋ ฌ์„ ์œ„ํ•ด์„œ Arrays.sort() ์˜ static ๋ฉ”์„œ๋“œ๋‚˜ , Col wonit.tistory.com ์ž๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ๋Š” ์ •๋ ฌ์„ ์œ„ํ•ด์„œ Arrays.sort() ์˜ static ๋ฉ”์„œ๋“œ๋‚˜ ,Collections.sort()์˜ static ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ์ธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ(๋‹ค์ฐจ์› ๋ฐฐ์—ด.. 2020. 2. 24.