๋ฌธ์ ๋ฒ ์คํธ ์จ๋ฒ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ฒ ์คํธ์จ๋ฒ ์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ํ ๋ ธ๋๊ฐ programmers.co.kr ํ์ด ์ฐ์ ์์๋ด์ผ ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฅ๋ฅด์ ์ด ์ฌ์ ํ์ -> ์ฅ๋ฅด ์์ ์ ํ๊ธฐ ๊ฐ ์ฅ๋ฅด์ ๊ฐ๋ณ ๊ณก ์ฌ์ ํ์ -> ๊ณก ์์ ์ ํ๊ธฐ ์ด๊ฑธ ํ ๋ฒ์ ์์๋ด๋ ค๊ณ ํ๋ฉด ์ฅ๋ฅด๋ฅผ key๋ก ๋๊ณ ์๋ map์ value๋ก (์ด ์ฌ์ ํ์, index๋ง๋ค์ ์ฌ์ํ์)์ ์ ์ฅํด๋์ด์ผ ํ๊ณ ์ด๋ฌ๋ฉด ์ฅ๋ฅด์ ์์๋ฅผ ์์๋ด๊ธฐ ํ๋ค ๋ฟ๋ง ์๋๋ผ ๊ณก ์์๋ ์ถ์ถํด์ ๋ํ๋ด์ผ ํ๋ค. ๋ฐ๋ผ์ map์ ๋๊ฐ๋ก ๋๋์๋ค. 1๋ฒ map์ { key : ์ฅ..
๋ฌธ์ ์ ํ๋ฒํธ ๋ชฉ๋ก ๋ฌธ์ ๋ฐ๋ก ๊ฐ๊ธฐ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ํ๋ฒํธ ๋ชฉ๋ก ์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค. ์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์ ๋๋ค. ๊ตฌ์กฐ programmers.co.kr ํ์ด ๋ณด์๋ง์ ํธ๋ผ์ด(Trie)๊ฐ ์๊ฐ๋ฌ๋ค. ๋ฌธ์์ด ๊ธธ์ด๋ 20 ์ดํ์ด๋ ์ต๋ ๋์ด๊ฐ 20์ธ ํธ๋ฆฌ๋ฅผ ๋ง๋ค๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ตฌํ์ด ๋๋ฌด ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ , ์ ๋ ฅ์ ๋ฒ์๊ฐ 10^6์ด๋ผ O(nlgn) ์ดํ๋ก ํ ๋ฒ์ ํด๊ฒฐํ ์ ์๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ง ์์๊น ์๊ฐํ๋ค. ์ ๋ ฌ๋์ด ์๋ phone_book์ ํ ๋ฒ์ ํ์ผ๋ฉด ๋ฑ์ฅํ๋ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์๋ ์ง๋ฅผ ํ์ธํ๋ฉด ๋๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ฑ์ฅํ๋ ๋ชจ๋ ๋ฌธ์์ด์ ๋ค์ ์..
์ ๋ ฌ ์ด๋ค ๋ฐ์ดํฐ๋ค์ด ์ฃผ์ด์ก์ ๋ ์ด๋ฅผ ์ ํด์ง ์์๋๋ก ๋์ดํ๋ ๋ฌธ์ ๊ฐ '์ ๋ ฌ'์ด๋ค. ๋ณดํต ์ปดํจํฐ์์๋ ํ์์ ์ํด์ ์ ๋ ฌ์ ์ํํ๋ค. ํ์์ ์ ๋ ฌ์ ํตํด ํ๋ ๊ฒ๋ณด๋ค ๋ ๊ฐ๋ ฅํ ์๊ณ ๋ฆฌ์ฆ์ด ์์ง๋ง, ํ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํด๋๋ฉด ๋ค์๋ถํฐ๋ ์ด์ง ํ์์ด๋ผ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ๋ฒ์ด๊ณ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฉํ๋ค. ๊ทธ๋์ ์ฃผ์ด์ง ๋ฌด์์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ ๋ง์ ์ฐ๊ตฌ์๋ค์ด ๋ฐฉ๋ฒ์ ๋ด๋์๋๋ฐ, ์์ผ๋ก ์ค๋ช ํ 6๊ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ทธ ์ธ์๋ ๋ง์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ค. ๋ชจ๋ ์ ๋ ฌ์ ์ค๋ช ์ ์์์ ์์ ๋ก ์ค๋ช ํ ๋ฐ์ดํฐ๋ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฌด์์๋ก ๋ฐฐ์น๋์ด์๋ 1~7์ ๋ฐ์ดํฐ์ด๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ ๋น๊ต + ์ด๋์ผ๋ก ์ธก์ ํ๋ค. ํน์ฑ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ๋๋ ์ ์๋ค. ์๊ฐ ๋ณต..
์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/64062 ๋ฌธ์ ์ค๋ช [๋ณธ ๋ฌธ์ ๋ ์ ํ์ฑ๊ณผ ํจ์จ์ฑ ํ ์คํธ ๊ฐ๊ฐ ์ ์๊ฐ ์๋ ๋ฌธ์ ์ ๋๋ค.] ์นด์นด์ค ์ด๋ฑํ๊ต์ ๋๋์ฆ ์น๊ตฌ๋ค์ด ๋ผ์ด์ธ ์ ์๋๊ณผ ํจ๊ป ๊ฐ์ ์ํ์ ๊ฐ๋ ์ค์ ์ง๊ฒ๋ค๋ฆฌ๊ฐ ์๋ ๊ฐ์ธ์ ๋ง๋์ ๊ฑด๋ํธ์ผ๋ก ๊ฑด๋๋ ค๊ณ ํฉ๋๋ค. ๋ผ์ด์ธ ์ ์๋์ ๋๋์ฆ ์น๊ตฌ๋ค์ด ๋ฌด์ฌํ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ท์น์ ๋ง๋ค์์ต๋๋ค. ์ง๊ฒ๋ค๋ฆฌ๋ ์ผ๋ ฌ๋ก ๋์ฌ ์๊ณ ๊ฐ ์ง๊ฒ๋ค๋ฆฌ์ ๋๋ค๋์๋ ๋ชจ๋ ์ซ์๊ฐ ์ ํ ์์ผ๋ฉฐ ๋๋ค๋์ ์ซ์๋ ํ ๋ฒ ๋ฐ์ ๋๋ง๋ค 1์ฉ ์ค์ด๋ญ๋๋ค. ๋๋ค๋์ ์ซ์๊ฐ 0์ด ๋๋ฉด ๋ ์ด์ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ด๋๋ ๊ทธ ๋ค์ ๋๋ค๋๋ก ํ๋ฒ์ ์ฌ๋ฌ ์นธ์ ๊ฑด๋ ๋ธ ์ ์์ต๋๋ค. ๋จ, ๋ค์์ผ๋ก ๋ฐ์ ์..
๐๋์ ํ๋ก๊ทธ๋๋ฐ ๋์ ํ๋ก๊ทธ๋๋ฐ์ Dynamic Programming ์ฆ, DP๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ด๋ค. ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์ ํ์์ผ๋ก ๋ง๋ค์ด ๋ถํ ์ ๋ณตํ ๋, ๋ฐ๋ณต๋ฌธ ๋๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ ์ด ๊ณผ์ ์์ ๊ณ์ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋์ด ์ค๋ณต๋๋ ๊ณ์ฐ์ ํ์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค. ์ด๋ ์ ํ์ ์ด๋ ๊ฒ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋๋ ๊ฒ์ ๋ฉ๋ชจ์ด์ ์ด์ ์ด๋ผ๊ณ ํ๋๋ฐ, ๋ณดํต ๋ฐฐ์ด์ ํํ๋ก ์ํ๋๋ค. DP ๊ณผ์ ์ ์ฒด ๋ฌธ์ ๋ฅผ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋จ์ํํ๋ค. 1๋ฒ์ ๊ณผ์ ์์ ์ ํ์์ ๋์ถํ๋ค. ์ ํ์์ ์ด์ฉํ์ฌ ๋ฐฐ์ด๋ก ๊ฐ๋จํ ํด๊ฒฐํ ์ ์๋์ง ์๊ฐํ๋ค. bottom-up top-down ์๋ค๋ฉด ์ฌ๊ทํจ์๋ฅผ ๋ง๋ค๊ณ ๋ฉ๋ชจ์ด์ ์ด์ ํ๋ค. ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐฉ์์ ๋ณดํต ๋ฐฐ์ด์ด๋ค. ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๋ํ ๋ฌธ์ ํผ๋ณด๋์น ์์ด ๊ตฌํ๊ธฐ ํผ๋ณด๋์น ์์ด..
๋น๋ฐ์ง๋ ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/17681 ๋น๋ฐ์ง๋ ๋ค์ค๋ ํ์ ํ๋ก๋๊ฐ ๋น์๊ธ์ ์จ๊ฒจ๋๋ ์ฅ์๋ฅผ ์๋ ค์ค ๋น๋ฐ์ง๋๋ฅผ ์์ ๋ฃ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋น๋ฐ์ง๋๋ ์ซ์๋ก ์ํธํ๋์ด ์์ด ์์น๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ ์ํธ๋ฅผ ํด๋ ํด์ผ ํ๋ค. ๋คํํ ์ง๋ ์ํธ๋ฅผ ํด๋ ํ ๋ฐฉ๋ฒ์ ์ ์ด๋์ ๋ฉ๋ชจ๋ ํจ๊ป ๋ฐ๊ฒฌํ๋ค. ์ง๋๋ ํ ๋ณ์ ๊ธธ์ด๊ฐ n์ธ ์ ์ฌ๊ฐํ ๋ฐฐ์ด ํํ๋ก, ๊ฐ ์นธ์ ๊ณต๋ฐฑ(" ) ๋๋๋ฒฝ(#") ๋ ์ข ๋ฅ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ ์ฒด ์ง๋๋ ๋ ์ฅ์ ์ง๋๋ฅผ ๊ฒน์ณ์ ์ป์ ์ ์๋ค. ๊ฐ๊ฐ ์ง๋ 1๊ณผ ์ง๋ 2๋ผ๊ณ ํ์. ์ง๋ 1 ๋๋ ์ง๋ 2 ์ค ์ด๋ ํ๋๋ผ๋ ๋ฒฝ์ธ ๋ถ๋ถ์ ์ ์ฒด ์ง๋์์๋ ๋ฒฝ์ด๋ค. ์ง๋ 1๊ณผ ์ง๋ 2์์ ๋ชจ๋ ๊ณต๋ฐฑ์ธ ๋ถ๋ถ์ ์ ์ฒด ์ง๋์์๋ ๊ณต๋ฐฑ์ด๋ค...
ํ https://programmers.co.kr/learn/courses/30/lessons/42588?language=cpp ์ฝ๋ #include #include #include using namespace std; vector solution(vector heights) { int heights_len = heights.size(); vector answer(heights_len); stack stk; // index, key for (int i = heights_len - 1; i>0; i--) { if (heights[i - 1] > heights[i]) { answer[i] = i; // stack while (stk.size() != 0) { auto tmp = stk.top(); if (h..
์นดํซ ์ฝ๋ #include #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; vector candidate; for (int i = 1; i ๋ง์ผ๋ฉด (๊ฐ๋ก, ์ธ๋ก) ๊ธธ์ด๋ฅผ ๊ฒฐ๊ณผ vector์ ๋ฃ์ด์ return brown ๊ฐฏ์ = 2*๊ฐ๋กyellow + 2*์ธ๋กyellow +4 4 : ์์ชฝ ๋ชจ์๋ฆฌ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋ #include #include using namespace std; vector solution(int brown, int red) { int len = brown / 2 + 2; int w = len - 3; int h = 3; while(w >= h){ if(w * h ..
Comment