๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿš“ Self Study/๐Ÿ”“ Programmers26

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (๋‹จ์ฒด์‚ฌ์ง„ ์ฐ๊ธฐ, 2017 ์นด์นด์˜ค๋ณธ์„  ์ฝ”๋“œ) C++ ์ฝ”๋”ฉ์œผ๋กœ ์ˆœ์—ด ์กฐํ•ฉ์— ๋Œ€ํ•ด์„œ ์นด์šดํŠธ ํ•ด์ฃผ๋Š” ๋ฌธ์ œ๋ฅผ ์ ‘ํ•ด๋ณธ ์ ์ด ์—†์—ˆ๋‹ค. ์†์œผ๋กœ ํ’€์–ด๋ดค๋Š”๋ฐ ์ด๊ฑฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ๊ฑด์„ ํ•˜๋‚˜ ํ•˜๋‚˜ ์ฒดํฌํ•˜์ง€ ๋ผ๋Š” ์ƒ๊ฐ ๋ฟ์ด์—ˆ๊ณ , ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ž๋‹ค. ๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋‹ต์•ˆ์„ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. next_permutation์„ ์ด์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์—์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆœ์—ด ์กฐํ•ฉ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. do while ๋ฌธ์„ ํ†ตํ•ด์„œ ์กฐ๊ฑด์ด ์—†๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์›ํ•˜๋Š” ์กฐ๊ฑด์„ flag๋ฅผ ํ†ตํ•ด์„œ ์นด์šดํŠธํ•  ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ๋‹ค. #include #include #include using namespace std; // ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๊ฒฝ์šฐ ํ•จ์ˆ˜ ๋‚ด์— ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ๊ผญ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. int solution(int n, vector data) {.. 2022. 1. 2.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (ํŠœํ”Œ, 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ) C++ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์ฝค๋งˆ์™€ ์ค‘๊ด„ํ˜ธ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ˆซ์ž๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜ ๊ฐ€์žฅ ๊ธด ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ด๋ ‡๊ฒŒ ์ ‘๊ทผํ•ด์„œ ํ’€์—ˆ๋‹ค. ํ•˜์ง€๋งŒ answer์˜ ์ •๋ ฌ ์ˆœ์„œ๋Š” ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฐ˜๋ณต๋˜์–ด์„œ ๋‚˜์™”๋Š”์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ๋‹ค. ์ด๋Š” Map์„ ์ด์šฉํ•ด์„œ value์˜ ๊ฐ’์„ ๊ณ„์†์ ์œผ๋กœ count๋ฅผ ์‹œ์ผœ์„œ ์ €์žฅํ•ด์•ผ ํ–ˆ๋‹ค. 1. map map ์„ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ value๊ฐ’์ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ–ˆ๋‹ค. -> 0์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์ด ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. 2. sort(map.begin(), map.end())๋ฅผ ํ†ตํ•ด์„œ value ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์‹œํ‚ฌ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜๋Š”๊ฐ€ -> vector๋กœ ๋ณต์‚ฌํ•œ ํ›„ sort๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค ํ•™๊ต ๊ณผ์ œ์—์„œ ์ˆ˜ํ–‰ํ–ˆ์—ˆ๋˜ ๋ฌธ์ž์—ด ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ณต์žกํ•˜์ง€ ์•Š์•„์„œ ๊ตฌ๋ถ„ํ•˜๋Š”.. 2022. 1. 1.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (์ž…๊ตญ์‹ฌ์‚ฌ, ์ด๋ถ„ํƒ์ƒ‰) C++ n ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด times ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒํผ์˜ ์ž…๊ตญ ์‹ฌ์‚ฌ๋ฅผ ๊ฐ€์žฅ ๋นจ๋ฆฌ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ณด์ž๋งˆ์ž while ๋ฌธ ์•ˆ์—์„œ sec๋ฅผ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•ด์ฃผ๊ณ  ์นด์šดํŠธ๋ฅผ ํ•ด์ฃผ๋ฉด์„œ ๋งˆ์ง€๋ง‰ ํ•œ ๋ช…์ด ๋‚จ์•˜์„ ๋•Œ ์–ด๋Š ์ž…๊ตญ ์‹ฌ์‚ฌ๋Œ€๋ฅผ ํ†ต๊ณผํ•ด์•ผ ๊ฐ€์žฅ ์งง์€ ์‹œ๊ฐ„์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ๋‹ค์Œ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํ•˜๋‚˜๋ฅผ ํ†ต๊ณผํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์ด๋‹ค. #include #include #include using namespace std; long long solution(int n, vector times) { long long answer = 0; int sec = 0; int sum = 0; long long min = 1000000001; int member = 0; vect.. 2022. 1. 1.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (๋” ๋งต๊ฒŒ, ํž™(Heap)) C++ // ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ํ๊ฐ€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ๋œ๋‹ค. Priority_queue pq; // ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฒกํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ Priority_queue pq; // ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์›์†Œ ์‚ฝ์ž… pq.push(์›์†Œ); // ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐ€์žฅ ์•ž์˜ ์›์†Œ ํ™•์ธ pq.top(); // ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐ€์žฅ ์•ž์˜ ์›์†Œ ์ œ๊ฑฐ pq.pop(); // ํฌ๊ธฐ ํ™•์ธ ๋ฐ ๋น„์–ด์žˆ๋Š”์ง€ ์œ ๋ฌด pq.size(); pq.empty(); ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ ๋Š” ์ •๋‹ต์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ธฐ์กด์—๋Š” sort๋ฅผ ์ด์šฉํ•ด์„œ while ๋ฌธ ์•ˆ์—์„œ ๊ณ„์†์ ์œผ๋กœ ์ •๋ ฌ์„ ์‹œ์ผœ์คฌ๋Š”๋ฐ ์ด๋Š” ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ์ข‹์ง€ ์•Š์Œ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. priority_queue๋ฅผ ์„ ์–ธํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ž๋™ ์ •๋ ฌ๋˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•ด topํ™•์ธpop ์ œ๊ฑฐ push ์ถ”๊ฐ€๋ฅผ ํ•œ๋‹ค๋ฉด .. 2022. 1. 1.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ, Summer/Winter Coding(~2018)) C++ ์‚ผ์ค‘ ๋ฃจํ”„๋ฅผ ๋Œ๋ ธ๋‹ค๋ผ๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ์–‘์‹ฌ์— ์ฐ”๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ์•„๋‹Œ ๋ฌธ์ œ. ๋ณ„๋กœ ์„ค๋ช…ํ•  ๊ฒƒ์ด ์—†์–ด ๋ณด์ธ๋‹ค. #include #include using namespace std; bool pass(int sum) { int count = 0; for(int i = 1 ; i 2021. 12. 30.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (๋‹จ์–ด ๋ณ€ํ™˜, ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(DFS/BFS)) C++ DFS๊ฐ€ ์•„๋‹ˆ๋ผ BFS ์ธ๊ฒƒ ๊ฐ™๊ธดํ•œ๋ฐ ์ผ๋‹จ ํ•จ์ˆ˜๋ช…์€ ์ด๋ ‡๊ฒŒ dfs๋กœ ํ•ด๋ฒ„๋ ธ๋‹ค. ์•„๋‹Œ๊ฐ€... ์•„์ง ๊ฐœ๋…์ด ํ™•์‹คํžˆ ์žกํžˆ์ง„ ์•Š์€๋“ฏ.. ์•„๋ฌดํŠผ DFS์™€ BFS๋ฅผ ํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ•˜๋‚˜์”ฉ ๋ฐ”๋€Œ์–ด์„œ ๋„˜๊ฒจ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์— Focus๋ฅผ ๋งž์ถ˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  visited๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”!! ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์˜ node๋ฅผ queue์— ๋ชจ๋‘ ๋„ฃ๊ณ  ์‚ดํ”ผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— dfs ์žฌ๊ท€๋ฅผ ํƒˆ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ์ด์ค‘ for๋ฌธ ์ค‘ nested๋œ for๋ฌธ์—์„œ visited ํ•œ ๋…ธ๋“œ์˜ visited๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ #include #include #include using namespace std; int answer = 100; string value; vector visited(50,0); void.. 2021. 12. 30.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (๋„คํŠธ์›Œํฌ, ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(DFS/BFS)) C++ ์ดˆ๋ฐ˜์— ๋ฌธ์ œ Setting ํ•  ๋•Œ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๊ณ  ๋ฌถ์ธ ๊ฒƒ์ด ๋ช‡ ๊ฐœ์ธ์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์—์„œ๋„ ๋งŽ์ด ์‹œ๊ฐ„์„ ์ผ๋‹ค. ํ•˜๋‹ค๋ณด๋‹ˆ๊นŒ visited ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ์‹œ์ž‘ํ•  ๋•Œ๊ฐ€ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ˆœ๊ฐ„์ด์—ˆ๋‹ค. #include #include #include #include using namespace std; int solution(int n, vector computers) { int answer = 0; vector adj(n+1); vector visited(n+1, 0); queue queue; // Diagonal Matrix ์ด๋ฏ€๋กœ Upper์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ๋งŒ ์ทจํ•ด์„œ adjacent list ๋งŒ๋“ค๊ธฐ for(int i = 0 ; i < n ; i++) { for(int j = i+1 ; j < n ; j++.. 2021. 12. 30.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ, ๊ทธ๋ž˜ํ”„) C++ ๊ทธ๋ž˜ํ”„์™€ DFS์˜ ๋Š๋‚Œ์ด ํ’๊ธด๋‹ค๋ฉด ์ด์ค‘ ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ Adjacent List๋ฅผ ๋งŒ๋“ค๊ณ  visited ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ BFS๋ฅผ iterativeํ•˜๊ฒŒ ๊ตฌ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  BFS์˜ ๊ฒฝ์šฐ ์‹œ์ž‘ ๋…ธ๋“œ์™€ ์–ผ๋งˆ๋‚˜ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค˜์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. while ๋ฌธ ์•ˆ์˜ for ๋ฌธ์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ node๋ฅผ ์„ค์ •ํ•ด๋†“๊ณ  ๊ทธ ์ฃผ๋ณ€ ์—ฐ๊ฒฐ๋œ node๋งŒ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์— queue์—์„œ front๋กœ ์ฐธ์กฐํ•œ node๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ level์„ ์ฒดํฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค. #include #include #include #include #include using namespace std; int solution(int n, vector edge) { int answer = 0; vect.. 2021. 12. 29.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (ํƒ€๊ฒŸ ๋„˜๋ฒ„, ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(DFS/BFS)) C++ ์•ฝ๊ฐ„ ์Œ.... ์ด๋Ÿฐ ๋ถ„์œ„๊ธฐ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋”ฑ ํ•˜๋‚˜ ์ •๋„ ์ฐจ์ด๋‚˜๋Š” +์™€ - / ์ธ์ ‘ํ•œ ์ฃผ๋ณ€์˜ ๊ฒƒ๋“ค์„ ๋น„๊ตํ•˜๊ณ  ๋“ฑ๋“ฑ ์ด๊ฒŒ ๋ฐ”๋กœ dfs ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ•˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์นด์นด์˜ค ์ปฌ๋Ÿฌ๋ง๋ถ ๋ฌธ์ œ๋ž‘ ๋น„์Šทํ•˜๋‹ค. ๋Š๋‚Œ์„ ์œ ์ง€ํ•˜์ž. #include #include using namespace std; int answer = 0; void recur(vector numbers, int target, int sum, int count) { // count๋„ ๊ณ„์†์ ์œผ๋กœ ์ƒˆ์„œ count๊ฐ€ numbers ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์™€ ๊ฐ™์•„์ง„ ๊ฒฝ์šฐ์— // sum ๋˜ํ•œ ์›ํ•˜๋Š” ํ•ฉ target๊ณผ ๋™์ผํ•˜๋‹ค๋ฉด answer๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  return;์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. if(count == numbers.size()) { if(sum == target) answe.. 2021. 12. 29.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (์—†๋Š” ์ˆซ์ž ๋”ํ•˜๊ธฐ, ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ3) C++ ๊ทธ๋ƒฅ ๋ฌด๋‚œํ•œ ์ฝ”๋”ฉ. ์ „์ฒด ๋ง์…ˆ์—์„œ ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋นผ๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค. #include #include #include using namespace std; int solution(vector numbers) { int answer = 0; vector arr(10); // arr ๋ผ๋Š” ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์–ด์ง„ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” index์˜ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. for(int i =0 ; i < numbers.size() ; i++) { arr[numbers[i]]++; } // ๋‹ค์‹œ arr ๋ฒกํ„ฐ๋ฅผ ๋Œ๋ฆฌ๋ฉด์„œ 0์ธ ๊ฐ’์„ answer์— ๋ˆ„์ ์‹œํ‚จ๋‹ค. for(int i =0 ; i < 10 ; i++) { if(arr[i] == 0) answer += i; } return answer; } 2021. 12. 29.