Algorithm
-
[BaekJoon] 12865๋ฒ : ํ๋ฒํ ๋ฐฐ๋ญSW Test/BaekJoon 2021. 4. 20. 02:07
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ์ด ๋ฌธ์ ๋ฅผ ๊ทธ๋ฆฌ๋๋ผ๊ณ ์คํดํ์ฌ ์ค๋ ๋๋น ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๊ฒฝ์ฐ๋ฅผ ๋ฃ๋๋ค๊ณ ํ ๊ฒฝ์ฐ ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๋๊ฐ ์๋ DP๋ก ํด๊ฒฐํด์ผ ํ๋ฉด DP๋ก ์ ๋ช ํ 0-1 knapsack ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. D[i][w] : ํ์ฌ w ๋ฌด๊ฒ๊ฐ ๋จ์ ์ํ์์ i๋ฒ์งธ item์ ํ๊น์ง ์ต๋ ๊ฐ์น if w[i] < w, D[i][w] = max(D[i-1][w-w[i]]+v[i], D[i-1][w]) : i๋ฒ์งธ Item์ ๋ด์ ์ ์๋ค๋ฉด, i-1๋ฒ์งธ๊น์ง Item์ ๋ด์ผ๋ฉด์ ํ์ฌ ๋ด์ ์ ์๋ ๋ฌด๊ฒ๊ฐ w-w[i]๋งํผ ๋จ์ ๊ฒฝ์ ์ ์ต๋ ๊ฐ์นํฉ์ i๋ฒ์งธ Item์ ๊ฐ์น๋ฅผ ํฉํ ๊ฐ๊ณผ D[i-1][w] ๊ฐ ๋น๊ต else, D[i][w] = D[i-1][w] #include #..
-
[BaekJoon] 2217๋ฒ : ๋กํSW Test/BaekJoon 2021. 4. 20. 01:59
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋กํ 5๊ฐ ์ค 3๊ฐ๋ก๋ง ๊ฐ์ง๊ณ ์ต๋ ์ค๋์ ๊ตฌํ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋ฉด ์ค๋์ด ๋ฌด๊ฑฐ์ด ์์ผ๋ก ์ ๋ ฌ ํ ์ต๋๋ก๋ถํฐ 3๊ฐ์ ๋กํ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๊ณ 3๊ฐ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ๊ณฑํ๊ธฐ 3์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ฆ, n๊ฐ์ ๋กํ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด, n๋ฒ์งธ๋ก ํฐ ๊ฐ์ ๊ณฑํ๊ธฐ n์ ํด์ค์ผ ํฉ๋๋ค. #include #include using namespace std; int main(){ int num; cin>>num; int arr[100000]; for(int i=0;i>arr[i]; } sort(arr, arr+num); int result = 0; for(int i=0;i
-
[BaekJoon] 1931๋ฒ : ํ์์ค ๋ฐฐ์ SW Test/BaekJoon 2021. 4. 20. 01:51
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ์ ์ธ ๋ฌธ์ ์ ๋๋ค. ๊ฐ์ฅ ๋ง์ด ํ์๋ฅผ ํ๊ธฐ ์ํด์๋ ํ์๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๋๋ ํ์์์ผ๋ก ์ ๋ ฌ ํ ๋์ผ ์ ๋จผ์ ์์ํ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ฉด ๋ฉ๋๋ค. #include #include #include #include using namespace std; bool cmp(pair& p1, pair& p2){ if(p1.second == p2.second){ return p1.firstnum; for(int i=0;i>a>>b; vec.push_back({a,b}); } sort(vec.begin(), vec.end(), cmp); int cnt = 1; int e = vec[0].second; for(int i=1;i=e){ e = ve..
-
[BaekJoon] 12852๋ฒ : 1๋ก ๋ง๋ค๊ธฐ 2SW Test/BaekJoon 2021. 4. 19. 21:35
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด BFS๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง DP๋ฅผ ํ์ฉํ์ฌ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. if i%2 != 0 && i%3 != 0, D[i] = D[i-1]+1 if i%2 == 0 && i%3 != 0, D[i] = min(D[i-1], D[i/2]) + 1 if i%2 == 0 && i%3 == 0, D[i] = min(D[i-1], D[i/2], D[i/3]) + 1 ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ๊ทธ ์ ์ซ์๋ฅผ ๋ด๋ prev ๋ฐฐ์ด์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. 10 => prev[10] = 9, prev[9] = 3, prev[3] = 1 #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie..
-
[BaekJoon] 11659๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4SW Test/BaekJoon 2021. 4. 19. 21:29
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด Prefix sum ๊ตฌํ๊ธฐ ๋ฌธ์ ์ ๋๋ค. DP๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ๋ณต์ก๋ O(N)์ ๊ตฌํ ์ ์์ต๋๋ค. D[i] = D[i-1] + D[i-2] +... +D[1] #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int arr[100000]={0}; int n,m; cin>>n>>m; for(int i=1;i>arr[i]; arr[i]+=arr[i-1]; } for(int i=0;i>a>>b; cout
-
[BaekJoon] 1149๋ฒ : RGB ๊ฑฐ๋ฆฌSW Test/BaekJoon 2021. 4. 19. 01:09
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด DP๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์๋ ๋ฌธ์ ๋ก ๊ท์น์ ์ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ํ์ ์ง์ ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ์ด์ 3๊ฐ์ง์ ์์ ํฌ๊ธฐ๋ก ์ ์ธํฉ๋๋ค. iํ j์ด์ j์์์ ์น ํ๋ค๊ณ ๊ฐ์ ํ์ ๋, i ๋ฒ์งธ ์ง๊น์ง ์ง์ ์น ํ๋ ์ต๋ ๋น์ฉ์ ๊ณ์ฐํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ํ์์๋ ์ด์ ์ ์์ ์น ํ ์ง์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ์์์ ์น ํ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. ๋ ๋ฒ์งธ ํ๋ถํฐ๋ ์ด์ ํ๊ณผ ๊ฒน์น์ง ์๋ ์ด ์ค์์ ์ต๋๊ฐ์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค. ex) 2ํ 1์ด์์๋ 1ํ 2์ด๊ณผ 1ํ 3์ด ๋ ์ค ์ต๋๊ฐ์ 2ํ 1์ด์ ๋นจ๊ฐ์ง์ ์น ํ๋ ๊ฐ์ ๋ํ๋ฉด ๋ฉ๋๋ค. #include using namespace std; int main(){ int num; cin>>num; int ..
-
[BaekJoon] 2579๋ฒ : ๊ณ๋จ ์ค๋ฅด๊ธฐSW Test/BaekJoon 2021. 4. 18. 19:58
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด DP๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค. ๊ธฐ์กด์ DP๋ 1์ฐจ์ ์ ํ์์ ์ฌ์ฉํ๋ค๋ฉด, ์ด๋ฒ ๋ฌธ์ ๋ 2์ฐจ์๋ฐฐ์ด์ ์ด์ฉํ ์ ํ์์ ๊ตฌํด์ผ ํฉ๋๋ค. (์ฐ์์ ์ผ๋ก 3๊ฐ์ ๊ณ๋จ์ ๋ฐ๋์ง์ ๋ํ ํ๋จ ๋๋ฌธ์) D[i][1] : i๋ฒ์งธ ๊ณ๋จ๊น์ง ํฌํจํ์ฌ ์ฐ์๋ ๊ณ๋จ ์๊ฐ 1์ธ ๊ฒฝ์ฐ, ์ฆ D[i-1]์ ๋ฐ์ง ์๊ณ , D[i-2]๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ D[i][2] : i๋ฒ์งธ ๊ณ๋จ๊น์ง ํฌํจํ์ฌ ์ฐ์๋ ๊ณ๋จ ์๊ฐ 2์ธ ๊ฒฝ์ฐ, ์ฆ D[i-1]์ ๋ฐ๊ณ D[i]๋ฅผ ์ฐ์์ ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ ๋ฐ๋ผ์ D[num][1]๊ณผ D[num][2] ์ค์ ์ต๋๊ฐ์ด ๋ต์ด ๋ฉ๋๋ค. #include #include using namespace std; int main(){ ios::sync_with_stdi..
-
[BaekJoon] 9095๋ฒ : 1, 2, 3 ๋ํ๊ธฐSW Test/BaekJoon 2021. 4. 18. 17:01
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด DP ์ ํ์ ์ธ ๋ฌธ์ ์ค ํ๋๋ก, ํ ์ด๋ธ ์ ์ํ๊ณ , ์ ํ์๋ง ์ฐพ์ผ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ ํ์์ D[i] = D[i-1] + D[i-2] +D[i-3] ์ ๋๋ค. #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int num; cin>>num; int vec[20]; vec[1] = 1; vec[2] = 2; vec[3] = 4; for(int i=4;in; cout