๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
-
[BaekJoon] 11724๋ฒ : ์ฐ๊ฒฐSW Test/BaekJoon 2021. 4. 23. 01:21
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ๊ทธ๋ํ๋ฅผ ๊ตฌํํ ์ ์๋์ง ํ์ธํ๋ ๋ฌธ์ ๋ก ์ธ์ ํ๋ ฌ์ด๋ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ํตํด ํํํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ธ์ ํ๋ ฌ๋ณด๋ค ์ธ์ ๋ฆฌ์คํธ๋ก ํ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์ต๋๋ค. O(N2) >n>>m; bool visit[1005]; fill(visit, visit+1005, false); for(int i=0;i>a>>b; vec[a].push_back(b); vec[b].push_back(a); }..
-
[BaekJoon] 10816๋ฒ : ์ซ์์นด๋ 2SW Test/BaekJoon 2021. 4. 21. 03:53
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ์ด๋ถํ์์์ ์ฐพ์์ผ ํ target ์์์ ์ธ๋ฑ์ค ์ค ๊ฐ์ฅ ์์ ๊ฐ๊ณผ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์ ๋นผ๋ ๊ฐ์ด ๊ฐ์์ ๋๋ค. ์ง์ ๊ตฌํํ ์ ์์ง๋ง, ํท๊ฐ๋ฆด ์ํ์ด ์๊ธฐ ๋๋ฌธ์ STL ์ค upper_bound์ lower_bound ๊ฐ์ ์ธ ์ ์์ต๋๋ค. #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); long long arr[100000]; int num; cin>>num; for(int i=0;i>arr[i]; } sort(arr, arr+num); int n; cin>>n; for(int i=0;i>ans; bool check = false; lo..
-
[BaekJoon] 1920๋ฒ : ์ ์ฐพ๊ธฐSW Test/BaekJoon 2021. 4. 21. 03:43
์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค. ๋ฌธ์ ์์ ํ์ด ์ด ๋ฌธ์ ๋ ๊ฐ๋จํ๊ฒ map, set STL์ ์ฌ์ฉํด์ ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฉ๋๋ค. ์ด์งํ์ ํธ๋ฆฌ๋ก ์ฝ์ , ์ ๋ ฌ ๊ณผ์ ์์ ์๊ฐ์ด ๋ ๊ฑธ๋ ค์ ์ด์งํ์๊ณผ ์๊ฐ๋ณต์ก๋๋ O(logN)์ผ๋ก ๊ฐ์ง๋ง ๋๋ฆฝ๋๋ค. ์ด์งํ์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์ง์ ๊ตฌํํด๋ ๋์ง๋ง, STL์ binary_search ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณด๋ค ํธ๋ฆฌํฉ๋๋ค. c, c++ stream ๋๊ธฐํ ๋๋ ์ฝ๋์ ๋ฒํผ ๋น์์ฃผ๋ ์ฝ๋๋ ์์ด์ผ ์๊ฐ์ด๊ณผ๊ฐ ๋ํ๋์ง ์์ต๋๋ค. #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int arr[100005]; int num; cin>>num; for(int i..
-
[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