[C++] 깊이 μš°μ„  탐색(DFS), λ„ˆλΉ„ μš°μ„  탐색(BFS)
Β·
πŸ“ Computer Science/✏ Algorithm
깊이 μš°μ„  탐색(Depth First Search)κ³Ό λ„ˆλΉ„ μš°μ„  탐색(Breadth First Search) 깊이 μš°μ„  탐색은 ν•œ λ°©ν–₯으둜 계속 κ°€λ‹€κ°€ 더 이상 갈 수 μ—†μœΌλ©΄ λΆ€λͺ¨ λ…Έλ“œλ‘œ λŒμ•„μ™€ λ‹€λ₯Έ λ°©ν–₯으둜 νƒμƒ‰ν•œλ‹€. 주둜 Stackμ΄λ‚˜ μž¬κ·€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„ν•œλ‹€. λͺ¨λ“  λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜κ±°λ‚˜ κ°€μ€‘μΉ˜, 이동 과정에 μ œμ•½μ΄ μžˆμ„ κ²½μš°μ— μ‚¬μš©ν•˜λ©΄ μ’‹λ‹€. 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” μˆœν™˜ μ•Œκ³ λ¦¬μ¦˜μ˜ ν˜•νƒœλ₯Ό κ°–κ³  μžˆλ‹€. BFS보닀 μ’€ 더 κ°„λ‹¨ν•˜λ‚˜ λ‹¨μˆœ 검색 속도 μžμ²΄λŠ” BFS보닀 λŠλ¦¬λ‹€. λ„ˆλΉ„ μš°μ„  탐색은 ν˜„μž¬ λ…Έλ“œμ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ λ…Έλ“œλ₯Ό λ¨Όμ € λ°©λ¬Έν•΄ νƒμƒ‰ν•œλ‹€. 주둜 Queueλ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„ν•œλ‹€. 두 λ…Έλ“œ μ‚¬μ΄μ˜ μ΅œλ‹¨ 경둜 ν˜Ήμ€ μž„μ˜μ˜ 경둜λ₯Ό μ°ΎλŠ” κ²½μš°μ— μ‚¬μš©ν•˜λ©΄ μ’‹λ‹€. κΈ°λ³Έ 원리 https://www.acmicpc.n..
[C++] 동적 κ³„νšλ²•(Dynamic Programming)
Β·
πŸ“ Computer Science/✏ Algorithm
동적 κ³„νšλ²•(Dynamic Programming)λ³΅μž‘ν•œ 문제λ₯Ό κ°„λ‹¨ν•œ μ—¬λŸ¬ 개의 문제둜 λ‚˜λˆ„μ–΄ ν‘ΈλŠ” 방법이닀.λ˜‘κ°™μ€ 연산을 λ°˜λ³΅ν•˜μ§€ μ•Šλ„λ‘ λ§Œλ“€μ–΄ μ£Όκ³  μ‹€ν–‰ μ‹œκ°„μ„ 쀄일 수 μžˆλ‹€.μž‘μ€ λ¬Έμ œλ“€μ„ ν’€μ–΄λ‚˜κ°€λ‹€ 보면 이전에 ꡬ해둔 더 μž‘μ€ λ¬Έμ œλ“€μ΄ ν™œμš©λ˜λŠ” 것을 ν™•μΈν•˜κ²Œ λœλ‹€. 이에 λŒ€ν•œ κ·œμΉ™μ„ μ°Ύμ•˜μ„ λ•Œ 점화식을 λ„μΆœν•΄ λ‚΄μ–΄ 동적 κ³„νšλ²•μ— μ μš©ν•œλ‹€. ν’€μ΄λ²•dp[i]κ°€ μ˜λ―Έν•˜λŠ” λ°”dp[i]λ₯Ό initialize ν•˜λŠ” 방법dp[i]의 점화식dp[i]λ₯Ό μ±„μš°λŠ” μˆœμ„œμ •λ‹΅μ΄ μ˜λ―Έν•˜λŠ” λ°” https://jyeonth.tistory.com/7 Leetcode: Word BreakWord Break I Given a non-empty string s and a dictionary wordDict containing a li..
[C++] 덱(Deque)
Β·
πŸ“ Computer Science/✏ Algorithm
덱(Deque) 큐의 λ³€ν˜•νŒμœΌλ‘œ μ•ž, λ’€ μ–‘μͺ½μ—μ„œ λͺ¨λ‘ μ‚½μž…κ³Ό μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€. 문제 https://www.acmicpc.net/problem/5430 5430번: AC 문제 μ„ μ˜μ΄λŠ” 주말에 ν•  일이 μ—†μ–΄μ„œ μƒˆλ‘œμš΄ μ–Έμ–΄ ACλ₯Ό λ§Œλ“€μ—ˆλ‹€. ACλŠ” μ •μˆ˜ 배열에 연산을 ν•˜κΈ° μœ„ν•΄ λ§Œλ“  언어이닀. 이 μ–Έμ–΄μ—λŠ” 두 κ°€μ§€ ν•¨μˆ˜ R(λ’€μ§‘κΈ°)κ³Ό D(버리기)κ°€ μžˆλ‹€. ν•¨μˆ˜ R은 배열에 μžˆλŠ” 숫자의 μˆœμ„œλ₯Ό λ’€μ§‘λŠ” ν•¨μˆ˜μ΄κ³ , DλŠ” 첫 번째 숫자λ₯Ό λ²„λ¦¬λŠ” ν•¨μˆ˜μ΄λ‹€. 배열이 λΉ„μ–΄μžˆλŠ”λ° Dλ₯Ό μ‚¬μš©ν•œ κ²½μš°μ—λŠ” μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. ν•¨μˆ˜λŠ” μ‘°ν•©ν•΄μ„œ ν•œ λ²ˆμ— μ‚¬μš©ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, "AB"λŠ” Aλ₯Ό μˆ˜ν–‰ν•œ λ‹€μŒμ— λ°”λ‘œ μ΄μ–΄μ„œ Bλ₯Ό μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. www.acmicpc.net #include #include #include usi..
[C++] 큐(Queue), μš°μ„ μˆœμœ„ 큐(Priority Queue)
Β·
πŸ“ Computer Science/✏ Algorithm
큐(Queue) 문제 https://www.acmicpc.net/problem/1966 1966번: ν”„λ¦°ν„° 큐 문제 μ—¬λŸ¬λΆ„λ„ μ•Œλ‹€μ‹œν”Ό μ—¬λŸ¬λΆ„μ˜ ν”„λ¦°ν„° κΈ°κΈ°λŠ” μ—¬λŸ¬λΆ„μ΄ μΈμ‡„ν•˜κ³ μž ν•˜λŠ” λ¬Έμ„œλ₯Ό 인쇄 λͺ…령을 받은 ‘μˆœμ„œλŒ€λ‘œ’, 즉 λ¨Όμ € μš”μ²­λœ 것을 λ¨Όμ € μΈμ‡„ν•œλ‹€. μ—¬λŸ¬ 개의 λ¬Έμ„œκ°€ μŒ“μΈλ‹€λ©΄ Queue 자료�� www.acmicpc.net #include #include #include #include using namespace std; int main() { int t; cin >> t; while (t--) { int n, m; cin >> n >> m; queue q; vector v(n); for (int i = 0; i > v[i]; if (i == m) q.push(m..
[C++] μŠ€νƒ(Stack)
Β·
πŸ“ Computer Science/✏ Algorithm
μŠ€νƒ(Stack) 문제 https://www.acmicpc.net/problem/4949 4949번: κ· ν˜•μž‘νžŒ μ„Έμƒλ¬Έμ œ μ„Έκ³„λŠ” κ· ν˜•μ΄ 잘 μž‘ν˜€μžˆμ–΄μ•Ό ν•œλ‹€. μ–‘κ³Ό 음, λΉ›κ³Ό μ–΄λ‘  그리고 μ™Όμͺ½ κ΄„ν˜Έμ™€ 였λ₯Έμͺ½ κ΄„ν˜Έμ²˜λŸΌ 말이닀. μ •λ―Όμ΄μ˜ μž„λ¬΄λŠ” μ–΄λ–€ λ¬Έμžμ—΄μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ, κ΄„ν˜Έλ“€μ˜ κ· ν˜•μ΄ 잘 맞좰져 μžˆλŠ”μ§€ νŒλ‹¨ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μ§œλŠ” 것이닀. λ¬Έμžμ—΄μ— ν¬ν•¨λ˜λŠ” κ΄„ν˜ΈλŠ” μ†Œκ΄„ν˜Έ("()") 와 λŒ€κ΄„ν˜Έ("[]")둜 2μ’…λ₯˜μ΄κ³ , λ¬Έμžμ—΄μ΄ κ· ν˜•μ„ μ΄λ£¨λŠ” 쑰건은 μ•„λž˜μ™€ κ°™λ‹€. λͺ¨λ“  μ™Όμͺ½ μ†Œκ΄„ν˜Έ("(")λŠ” 였λ₯Έμͺ½ μ†Œκ΄„ν˜Έ(")")μ™€λ§Œ 짝을 이뀄야 ν•œλ‹€. λͺ¨λ“  μ™Όμͺ½ λŒ€κ΄„ν˜Έ("[")λŠ” 였λ₯Έμͺ½ λŒ€κ΄„www.acmicpc.net#include #include #include using namespace std;int main(void){ ..
HTTP
Β·
πŸ“ Computer Science/✏ Network & Web
1. HTTP(HyperText Transfer Protocol) 1) κ°œλ… μ›Ή μƒμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 간에 μš”μ²­/μ‘λ‹΅μœΌλ‘œ μžμ›μ„ 주고받을 λ•Œ μ“°λŠ” ν”„λ‘œν† μ½œμ΄λ‹€. ν΄λΌμ΄μ–ΈνŠΈμΈ μ›ΉλΈŒλΌμš°μ €μ™€ μ„œλ²„λŠ” 주둜 μ›Ή νŽ˜μ΄μ§€(HTML)인 ν…μŠ€νŠΈ κ΅ν™˜μ„ ν•˜λŠ”λ°, λˆ„κ΅°κ°€ λ„€νŠΈμ›Œν¬μ—μ„œ μ‹ ν˜Έλ₯Ό 쀑간에 κ°€λ‘œμ±ˆλ‹€λ©΄ λ‚΄μš©μ΄ λ…ΈμΆœλ˜λŠ” λ³΄μ•ˆ μ΄μŠˆκ°€ μ‘΄μž¬ν•œλ‹€. 평문 톡신이기 λ•Œλ¬Έμ— 도청이 κ°€λŠ₯ν•˜λ‹€. 톡신 μƒλŒ€λ₯Ό ν™•μΈν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μœ„μž₯이 κ°€λŠ₯ν•˜λ‹€. 완전성을 증λͺ…ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λ³€μ‘°κ°€ κ°€λŠ₯ν•˜λ‹€. 80번 포트λ₯Ό μ‚¬μš©ν•œλ‹€. 2) νŠΉμ§• λΉ„μ—°κ²°ν˜•(Connectionless): ν•˜λ‚˜μ˜ μ„Έμ…˜ μ•ˆμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ Request와 Response을 μˆ˜ν–‰ν•˜λ©΄ μ„Έμ…˜μ΄ λŠμ–΄μ§„λ‹€. λ¬΄μƒνƒœμ„±(Stateless): 연결을 λŠλŠ” μˆœκ°„ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œ..