·622 words·3 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/27421 ๋ฒ์ญ ๋ฌธ์ # Taro๋ ์ฅ๋๊ฐ ์ฒ ๋ ์ ๋ก ์ธํธ๋ฅผ ๊ฐ์ง๊ณ ๋๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ ๋ก๋ ์ง๊ฐ ์ค์ฌ๊ฐ(90๋ ๊ฐ๋)์ ๊ฐ์ง ํธ ๋ชจ์์ด์ง๋ง, ๋ฐ์ง๋ฆ์ ๋ค์ํฉ๋๋ค. Taro๋ ์ด ๋ชจ๋ ์ ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๋ฃจํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ๋ก ์ธํธ๊ฐ ํ๋์ ๋ฃจํ๋ฅผ ํ์ฑํ๋ค๋ ๊ฒ์ ๋ชจ๋ ์ ๋ก์ ์ ๋์ด ๋ค๋ฅธ ์ ๋ก์ ๋ถ๋๋ฝ๊ฒ ์ฐ๊ฒฐ๋๊ณ , ๋ชจ๋ ์ ๋ก๊ฐ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋ ์ ๋ก์ ์ฐ๊ฒฐ๋์ด ์์ ๋๋ฅผ ์๋ฏธํฉ๋๋ค. Taro๊ฐ ์ด๊ฒ์ ๋ฌ์ฑํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ์ธ์.
·719 words·4 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/18214 ๋ฒ์ญ ๋ฌธ์ ๋ฒ์ญ # Susan์ ์ํ ์ ๋ฆฌ๋ ์ํ์ง๋ง, ์ฌ๋ฌด์ค ์ฑ
์ ์ ๋ฆฌ๋ ์ ๋ชปํฉ๋๋ค.
Susan์ ๋ฐฉ๊ธ ์ผ๋ จ์ ๋ฌธ์๋ค์ ๋ํ ์๋ฅ ์์
์ ๋ง์ณค๊ณ , ๋ฌธ์๋ค์ ์ฌ์ ํ ์ฑ
์์ ์์ฌ ์์ต๋๋ค. ๋ฌธ์๋ค์ ์ผ๋ จ๋ฒํธ๊ฐ ์์ผ๋ฉฐ, ์์ฌ๊ฐ ๊ฐ์ ธ์์ ๋๋ ์์๋๋ก ์์ฌ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ์์๊ฐ ์๋ฒฝํ์ง ์์๋ฐ, Susan์ด ๋๋ฌด ๊ฒ์๋ฌ์ ๋๋ฏธ์์ ๋น ์ ธ๋์จ ๋ฌธ์๋ค์ ์ ์๋ฆฌ์ ๋ค์ ๋ฃ์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ์์
์ด ๋๋ฌ๋ค๋ ์์์ ๋ฃ๊ณ , ์์ฌ๋ ๊ทธ๋
์๊ฒ ๋ณด๋ด๊ณ ์๋ ๋ฌธ์ ์์์ ๋ฌธ์๋ค์ ์ฆ์ ๋ฐ๋ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฌผ๋ก ๋ฌธ์๋ค์ ์ผ๋ จ๋ฒํธ ์์๋๋ก ์์์ ๋ณด๊ด๋์ด์ผ ํฉ๋๋ค.
·858 words·5 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/26857 ๋ฒ์ญ ๋ฌธ์ ๋ฒ์ญ # ๋ ํ์ Aldo์ Bondan์ COVID-19 ํฌ๋ฐ๋ฏน ์ํฉ์ด ์
ํ๋์ด ๋์๊ฐ ๋ค์ ๋ด์๋๋ฉด์ ์ง์ ๊ฐํ ์์ต๋๋ค. ๊ทธ๋ค์ ํ๊ธฐ๋ฅผ ๋ง์น๊ณ ๋ฐฉํ ์ค์ด์ง๋ง, ์ง ๋ฐ์ผ๋ก ๋๊ฐ ์ ์๋ค๋ฉด ๋ฌด์จ ๋ฐฉํ์ ์ฆ๊ธธ ์ ์์๊น์? ํ์ง๋ง ์ง๋ฃจํจ์ ์ฐฝ์์ฑ์ ๋ถ๋ฌ์ผ์ผํต๋๋ค. ๊ทธ๋ค์ ์ง๋ฃจํ ๋ฐฉํ ๋์ ์๋ก์ด ๊ฒ์์ ๋ง๋ค์์ต๋๋ค.
·186 words·1 min
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/31265 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # ์ดํด๊ฐ ์กฐ๊ธ ์ด๋ ค์ด๋ฐ, ๊ฒฐ๊ตญ $N$๊ฐ์ ํ๋ จ ์ํฉ์์ $d$๊ฐ์ ํ๋ จ ๊ฐ์ด๋ฐ ํ๋๋ฅผ ๊ณ์ ๊ณ ๋ฅด๊ณ , ํ๋ จ ์๊ฐ์ ํฉ์ ์ต๋ํ ํ๊ณ ์ถ๋ค. ๋ฐฐ๋ญ ๋ฌธ์ ์ ๋น์ทํด๋ณด์ธ๋ค. $d$๊ฐ์ ์ ํ์ง๊ฐ $N$๋ฒ ์ฃผ์ด์ง๊ณ , ํ๋ จ์๊ฐ = ๋ฌด๊ฒ์ ํฉ์ ์ต๋ํ ํด์ผํ๋ค. ์ด? ๋์ด๋ธํ๊ฒ ํ๋ฉด ํฐ์ง๋? ๊ฐ ๋จ๊ณ๋ง๋ค ํด์ผํ๋ ์ฐ์ฐ๋์ $M * d_i$์ด๋ค. ์ด ์ฐ์ฐ๋์ $\sum\limits_{i = 1}^N M * d_i \leq 1000 M$ ์ด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค. ์๋!!!!!!!! ์ํ๋ ธ๋ ํ๋ค ๊ฐ ํ๋ จ ์ํฉ์์ ์ ์ด๋ ํ๋์ ํ๋ จ์ ๊ณจ๋ผ ํ๋ จ ๊ณํ์ ๋ฃ์ผ๋ ค๊ณ ํ๋ค. ํ ํ๋ จ์ ์ฌ๋ฌ๋ฒ ์ฐ์ง ์๊ฒ $M$์ ๋ํด ์ญ์์ผ๋ก ๋๋ฉด์, ์ ์ฒ๋ฆฌํ์. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ cin >> N >> M; rep(i, 0, N){ cin >> D[i]; tv[i].resize(D[i]); } rep(i, 0, N) rep(j, 0, D[i]) cin >> tv[i][j]; knapsack[0][0] = true; rep(i, 1, N+1) for(auto t: tv[i-1]) rrep(j, 0, M+1) if(j - t >= 0 && (knapsack[i-1][j-t] || knapsack[i][j-t])) knapsack[i][j] = true; rrep(j, 0, M+1) if(knapsack[N][j]){ cout << j; return; } cout << -1; } ๐ ๊ตฌํ ์ฝ๋ ์ ๊ธ
·335 words·2 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/30788 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # ๋์นญ์ด๋์ ์ด๋ป๊ฒ ์ํ์ ์ผ๋ก ํํํ ์ ์์๊น?? ์ฌ์ด๊ฑฐ๋ถํฐ ํด๋ณด์. ์๋ ์ ์ด $(x, y)$์ ์์๋ค๋ฉด $90\degree$ ์ง์ ์ ๋์นญ์ํค๋ฉด $(-x, y)$ $45\degree$ ์ง์ ์ ๋์นญ์ํค๋ฉด $(y, x)$ $60\degree$ ์ง์ ์ ๋์นญ์ํค๋ฉด $y = \sqrt{3}x$์ ๋์นญ์ธ๊ฑฐ๋๊น… ์๋ ์ด๊ฑฐ ๋๋ฌด ๊น๋ค๋ก์ด๋ฐ? ํ๋ ฌ์ฐ์ฐ์ ํ๊ธฐ ์ซ์๋ฐ.. ๊ฐ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐํด๋ณด๋๊ฒ๋ ์ข๊ฒ ๋ค. ๊ทน์ขํ๊ณ์ฒ๋ผ, ์๋ ์ ์ด $0\degree$์ ์์๋ค๋ฉด $60\degree$์ ๋ํด ๋์นญ์ํค๋ฉด $120\degree$์ $120\degree$์ ๋ํด ๋์นญ์ํค๋ฉด $240\degree$์ ์ด๋ฐ ๋๋์ธ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๋ค๋ฉด ์์ 1๋ฒ์ $0\degree \rightarrow 120\degree \rightarrow 330 \degree \rightarrow 60 \degree \rightarrow 0$ ์ธ๊ฑฐ ๊ฐ๋ค! $45\degree = 225\degree$๋ผ๊ณ ์๊ฐํ๊ณ , ๊ฐ๊น์ด ๊ณณ์ ์ฐพ์์ ๋๋ฐฐ๋ก ๋๊ธฐ๊ณ , 360์ผ๋ก ๋ชจ๋๋ฌ๋ฅผ ์ทจํ์. ์, ์ด์ ํ๋ฒ์ฉ ์จ์ 0๋๋ก ๋์์ค๋๊ฑธ ์ด๋ป๊ฒ ๋ง๋ค์ง? $15\degree$๋ก ๋ง๋ค ์ ์๋๊ฑด $30\degree$ $x\degree$๋ฅผ $a$์ ๋์นญ์ด๋์ํค๋ฉด $(2a - x) \degree$๊ฐ ๋๋ ๊ฒ ๊ฐ๋ค! ์ด๊ฑธ ๋ $b$์ ๋์นญ์ด๋์ํค๋ฉด $(2b - (2a - x))\degree$ ์ธ๊ฑฐ๊ฐ๊ณ .. ๊ทธ๋ฌ๋ฉด ํ๋ง๋ก ๋ฐ๋์ด๊ฐ๋ฉด์ ๋ํด์ง๋๊น ๊ฒฐ๊ตญ ๋ชจ๋๋ฌ 360์ ๋ํด ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ํฉ์ ์ผ์ ํ๊ฒ ๋ง์ถ ์ ์๋์ง์ ๋ํ ๋ฌธ์ ๋ก ๋ฐ๋๋ค. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ int N; cin >> N; vector<int> A(N); rep(i, 0, N) cin >> A[i]; if(N%2){ cout << "NO"; return; } int sum = 0; for(auto x: A) sum += x; sum %= 360; DP[0][0][0] = true; rep(i, 0, N) rrep(j, 0, N) rep(k, 0, 360) if(DP[i][j][k]){ int nxt = (k + A[i]*2) % 360; DP[i+1][j+1][nxt] = true; DP[i+1][j][k] = true; } if(DP[N][N/2][sum] || DP[N][N/2][(sum + 180) % 360]){ cout << "YES\n"; vector<bool> used(N); int ci = N, cj = N/2, cs = sum; if(!DP[N][N/2][sum]) cs = (sum + 180) % 360; while(cj){ int prv = (cs - A[ci-1]*2) % 360; if(prv < 0) prv += 360; if(DP[ci-1][cj - 1][prv]){ used[ci-1] = true; ci--; cj--; cs = prv; } else ci--; } vector<int> v1, v2; rep(i, 0, N){ if(used[i]) v1.push_back(i+1); else v2.push_back(i+1); } rep(i, 0, N/2){ cout << v1[i] << ' ' << v2[i] << ' '; } } else cout << "NO"; } ๐ ๊ตฌํ ์ฝ๋ ์ ๊ธ
·537 words·3 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/23569 ๋ฒ์ญ ๋ฌธ์ ๋ฒ์ญ # ๋ฌธ์ ์ค๋ช
# ์ฌ๋๋ค ๊ฐ์ ์ํธ์์ฉ์ด ์ฃผ์ด์ง ๋, ์ ์ ์ด ์ฌ๋๋ค์ด๊ณ ๋ ์ฌ๋์ด ์๋ก ์น๊ตฌ์ธ ๊ฒฝ์ฐ์๋ง ๊ทธ๋ค ์ฌ์ด์ ๊ฐ์ ์ด ์๋ ๊ทธ๋ํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ทธ๋ํ๋ฅผ ์์
๋คํธ์ํฌ๋ผ๊ณ ํ๋ฉฐ, ์๋ฅผ ๋ค์ด ๋ํ์ ํ์๋ค์ด๋ ์์ ๋ง์์ ์ฃผ๋ฏผ๋ค๊ณผ ๊ฐ์ ๋ชจ๋ ์ฌ๋๋ค์ ์งํฉ์ ๋ํด ์ ์ ์๋ฉ๋๋ค. ์ต๊ทผ ๋ช ๋
๊ฐ ์์
๋คํธ์ํฌ๋ฅผ ๋ถ์ํ๋ ์์ ํ ๊ณผํ ๋ถ์ผ๊ฐ ์๊ฒจ๋ฌ๋๋ฐ, ์ด๋ ์ฌ๋๋ค๊ณผ ๊ทธ๋ค์ ํ๋์ ๋ํ ๋ง์ ํฅ๋ฏธ๋ก์ด ์ธก๋ฉด๋ค์ด ์ด ์น๊ตฌ ๊ด๊ณ ๊ทธ๋ํ์ ์์ฑ์ผ๋ก ๊ฐ์ฅ ์ ์ดํด๋๊ธฐ ๋๋ฌธ์
๋๋ค.