[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค :: ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ (๋ฌธ์ œ ํ’€์ด, ์ฝ”๋“œ)
Algorithm ๋ฌธ์ œ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2020. 7. 31. 13:12

๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ https://programmers.co.kr/learn/courses/30/lessons/49189 ์ฝ”๋“œ #include #include #include #include #include using namespace std; int solution(int n, vector edge) { int answer = 0; map linked_list; set list; list.insert(1); // ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ int size = edge.size(); for(int i=0; i

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค :: ๋ผ๋ฉด๊ณต์žฅ (๋ฌธ์ œ ํ’€์ด, ์ฝ”๋“œ)
Algorithm ๋ฌธ์ œ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2020. 7. 31. 12:49

๋ผ๋ฉด๊ณต์žฅ https://programmers.co.kr/learn/courses/30/lessons/42629# ์ฝ”๋“œ #include #include #include using namespace std; vector node; int solution(int stock, vector dates, vector supplies, int k) { int answer = 0; int day = stock; int size = dates.size(); for (int i = 0; i < size; i++) { node.push_back(make_pair(dates[i], supplies[i])); } while (day < k) { int idx = 0; int max_idx = 0; while (idx < nod..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ๋น„ํŠธ์กฐ์ž‘ (๋น„ํŠธ๋งˆ์Šคํฌ, ์—ฐ์‚ฐ, ์ฝ”๋“œ ๊ตฌํ˜„)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 31. 09:45

๋น„ํŠธ ์กฐ์ž‘ ๊ฐœ๋… ๋น„ํŠธ(bit)๋ž€ 0๊ณผ 1์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„์ด๋‹ค. 4bit๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋ฅผ ๋‹ˆ๋ธ”(nibble)์ด๋ผ ๋ถ€๋ฅด๊ณ , 8bit๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋ฅผ ๋ฐ”์ดํŠธ(byte)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 2byte๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋Š” ์ผ๋ถ€ ์ „์žํ†ต์‹ ๊ธฐ๊ธฐ์—์„œ ์›Œ๋“œ(word)๋ผ๊ณ  ํ•œ๋‹ค. ๊ตฌํ˜„ C++์—์„œ๋Š” ๋น„ํŠธ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ์ด๋ผ๋Š” ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฐ์‚ฐ C++์—์„œ ๋น„ํŠธ์—ฐ์‚ฐ๋“ค์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐœ๋… ๊ณต๋ถ€ ์ธก๋ฉด์—์„œ ๊ทธ๋ƒฅ ๊ตฌํ˜„๋„ ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ๋ฒ•๋„ ์ตํ˜€๋‘๋ คํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด 1byte ๋‹จ์œ„๋กœ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, bit ๋‹จ์œ„์˜ ์ž๋ฃŒํ˜•์€ ์—†๋‹ค. ๋‹ค๋งŒ bool ํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ 1byte๋ฅผ ์ฐจ์ง€ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด true ํ˜น์€ false ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๊ตฌ์กฐ์ฒด
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:22

๊ตฌ์กฐ์ฒด ๊ตฌ์กฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋“ค์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค. ์šฉ๋„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋‚˜ ๊ทธ๋ž˜ํ”„์—์„œ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ, ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์ด ์กด์žฌํ•œ๋‹ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์„ ๊ฐ๊ฐ ๊ตฌ์„ฑํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐํ˜•์ด๋ฏ€๋กœ ์ด ๊ตฌ์กฐ์ฒด๋Š” ์ž์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด๊ฐ€ ๋œ๋‹ค. C++ struct Node { int value; Node* pointer; // ์ž์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด }; int main() { Node A; // ๊ตฌ์กฐ์ฒด ์„ ์–ธ A.value = 4; Node* Ap = A.pointer; // . ์—ฐ์‚ฐ์ž๋กœ ์ ‘๊ทผ int Avalue = A.value; Ap = A; Avalue = Ap->value; // ํฌ์ธํ„ฐ๋กœ ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ํž™
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:21

ํž™ ์šฉ๋„ ๊ตฌํ˜„ ์ข…๋ฅ˜ ์—ฐ์‚ฐ ์ •๋ ฌ ํž™ ํž™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ธ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. partial-ordering (๋ถ€๋ถ„ ์ •๋ ฌ)์„ ๋งŒ์กฑํ•˜๋Š” left-complete binary tree (์ขŒ์ธก ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ) ์ด๋‹ค. ๋ถ€๋ถ„ ์ •๋ ฌ์„ ๋งŒ์กฑํ•œ๋‹ค๋Š” ๋ง์€ '๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹๋…ธ๋“œ' ๊ฐ„์—๋Š” ํŠน์ • ๋Œ€์†Œ๊ด€๊ณ„ ์„ฑ๋ฆฝํ•˜์ง€๋งŒ, 'ํ˜•์ œ๋…ธ๋“œ'๊ฐ„์—๋Š” ํ•ด๋‹น ๋Œ€์†Œ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ํž™ ํŠธ๋ฆฌ์—์„œ๋Š” ํ—ˆ์šฉํ•œ๋‹ค. ์šฉ๋„ ํž™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ธ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ ์ค‘ ํ•˜๋‚˜๊ฐ€ O(n)์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ํ•˜์ง€๋งŒ ํž™์„ ์ด์šฉํ•˜๋ฉด ๊ฐ€์žฅ ํฐ ๊ฐ’์ด๋‚˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋‘˜ ๋‹ค O(logn)๋งŒ์— ๋น ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ํŠธ๋ฆฌ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:20

ํŠธ๋ฆฌ ์šฉ๋„ ์šฉ์–ด ์ •๋ฆฌ ์ข…๋ฅ˜ ์ด์ง„ ํŠธ๋ฆฌ ์ผ๋ฐ˜ ํŠธ๋ฆฌ ์Šค๋ ˆ๋“œ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌํ˜„ ๋ฐฐ์—ด ํ‘œํ˜„๋ฒ• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„๋ฒ• ํŠธ๋ฆฌ ํ™œ์šฉ ํƒ์ƒ‰ ์ง‘ํ•ฉ ํ‘œํ˜„ ํ—ˆํ”„๋งŒ ์ฝ”๋“œ ํŠธ๋ฆฌ ํŠธ๋ฆฌ๋ž€ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜๋กœ ๋ฌด๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(Connected Undirected Acyclic Graph)์ด๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ , ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ์˜ in-degree๊ฐ€ 1์ธ ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ๋งํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜์ด๋ฏ€๋กœ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์— ์†ํ•œ๋‹ค. ์šฉ๋„ ๊ณ„์ธต์ ์ธ ์กฐ์ง์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ์ปดํ“จํ„ฐ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ / ์ธ๊ณต์ง€๋Šฅ์˜ decision tree ๋“ฑ์— ์ด์šฉ๋œ๋‹ค. ๋˜ํ•œ ์ž๋ฃŒ์˜ ํƒ์ƒ‰ / ์ •๋ ฌ / DB ๊ตฌ์„ฑ์ด๋‚˜ ๋ถ„์ž๊ตฌ์กฐ์‹ ์„ค๊ณ„ ๋“ฑ์—์„œ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ด์šฉ๋œ๋‹ค. (๊ฒฐ์ •ํŠธ๋ฆฌ)(์ด์ง„ํƒ์ƒ‰) ์šฉ์–ด ์ •๋ฆฌ ๋…ธ๋“œ ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๊ทธ๋ž˜ํ”„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:17

๊ทธ๋ž˜ํ”„ ์šฉ๋„ ์šฉ์–ด ์ •๋ฆฌ ๊ธฐ๋ณธ ์‹ฌํ™” ๊ตฌํ˜„ ์ธ์ ‘ ํ–‰๋ ฌ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋น„๊ต ์—ฐ์‚ฐ ๋ถ„๋ฅ˜ ๋ฐฉํ–ฅ์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์—ฐ๊ฒฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์‚ฌ์ดํด์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ํŠน์ˆ˜ํ•œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋„์ถœ๋œ ๋ฌธ์ œ๋“ค ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐธ๊ณ  ๊ทธ๋ž˜ํ”„ ๊ทธ๋ž˜ํ”„๋ž€ '๋…ธ๋“œ'์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” '๊ฐ„์„ '์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ์‚ดํŽด๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค(๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ ๋“ฑ)๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๊ทธ๋ž˜ํ”„๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค. ์šฉ๋„ ๊ทธ๋ž˜ํ”„๋Š” ์ผ์ƒ์ƒํ™œ์—์„œ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋กœ ์ง€๋„๋‚˜ ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ์ „๊ธฐํšŒ๋กœ, ๋„๋กœ ๋“ฑ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ ์„ธ๋ถ€์ „๊ณต์—์„œ๋Š” ํ†ต์‹  ๋„คํŠธ์›Œํฌ ๋ถ„์•ผ์—์„œ๋„ ์“ฐ์ด๋ฉฐ, ๋…ผ๋ฆฌํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์ตœ๊ทผ์—๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋งํฌ ์—ฐ๊ฒฐ(Page Rank)์ด๋‚˜ SNS ์ƒ์˜ ์นœ๊ตฌ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋˜..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์„œ๋ก 
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:14

์„œ๋ก  ์ž๋ฃŒ๊ตฌ์กฐ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ปดํ“จํ„ฐ์—์„œ ์ž๋ฃŒ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์กฐ์งํ™”ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ˜๋“œ์‹œ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š” ๋ถ„์•ผ์ด๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋จผ์ € ๋‹จ์ˆœ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋ณตํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ๋ณตํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ์—๋Š” ์„ ํ˜• ๊ตฌ์กฐ์™€ ๋น„์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ์‚ดํŽด๋ณด์ž. ๋ฐฐ์—ด, ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์Šคํƒ, ํ, ๋ฑ ๊ทธ๋ž˜ํ”„ ํŠธ๋ฆฌ ํž™ ๊ตฌ์กฐ์ฒด