Skip to main content

Brute_force

BOJ 5638 ์ˆ˜๋ฌธ

·209 words·1 min
๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/5638 ๐Ÿง ๊ด€์ฐฐ ๋ฐ ์ ‘๊ทผ # ๋Œ์— ์ˆ˜๋ฌธ์ด ์žˆ๊ณ , ์œ ๋Ÿ‰๊ณผ ํ”ผํ•ด๋น„์šฉ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ”ผํ•ด๋น„์šฉ์€ ์—ฌ๋Š” ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ ์ˆ˜๋ฌธ์— ๋Œ€ํ•ด, ์œ ๋Ÿ‰์— ์‹œ๊ฐ„์„ ๊ณฑํ•ด์„œ ๊ฐ ์ˆ˜๋ฌธ์ด ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌผ์˜ ์–‘์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ๊ฐ€๊ฒฉ์ด ๋‚˜์˜จ๋‹ค. ์ด๊ฑด ๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ๋Š” ์กฐ๊ธˆ ๊ณค๋ž€ํ•˜๊ณ , ๋ฐฐ๋‚ญ ๋ฌธ์ œ๋กœ ๋˜๋‚˜? ํ–ˆ๋Š”๋ฐ, $V$๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค! ๊ทธ๋Ÿฐ๋ฐ ์ˆ˜๋ฌธ์˜ ๊ฐœ์ˆ˜๊ฐ€ $n \leq 20$์œผ๋กœ ์œ ์˜๋ฏธํ•˜๊ฒŒ ์ž‘๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋ชจ๋“  ์ˆ˜๋ฌธ์„ ์—ด์–ด๋ณด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„ $O(2^n \cdot nm)$ ์ •๋„์— ๋™์ž‘ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ’ป ํ’€์ด # ์ฝ”๋“œ (C++): void solve(){ int N; cin >> N; vector<pll> door(N); rep(i, 0, N) cin >> door[i].first >> door[i].second; int Q; cin >> Q; rep(q, 1, Q+1){ ll V, T; cin >> V >> T; ll ans = 1e18; rep(bit, 0, 1<<N){ ll wat = 0, cost = 0; rep(i, 0, N) if(bit & (1<<i)) wat += door[i].first*T, cost += door[i].second; if(wat >= V) ans = min(ans, cost); } cout << "Case " << q << ": "; if(ans == 1e18) cout << "IMPOSSIBLE\n"; else cout << ans << '\n'; } } ๐Ÿ”’ ๊ตฌํ˜„ ์ฝ”๋“œ ์ž ๊ธˆ

BOJ 33527 ์‹ ์ดŒ ๊ธธ์ฐพ๊ธฐ ์„œ๋น„์Šค

·277 words·2 mins
๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/33527 ๐Ÿง ๊ด€์ฐฐ ๋ฐ ์ ‘๊ทผ # ๋ญ”๊ฐ€ ์ „๋ฐ˜์ ์œผ๋กœ ์„ธํŒ…์ด BOJ 5214 ํ™˜์Šน์ด ์ƒ๊ฐ๋‚˜๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„? ๋‚˜์ด๋ธŒํ•˜๊ฒŒ ๋ˆ๋‹ค๋ฉด, ๊ฐ ๋…ธ์„ ์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ •๋ฅ˜์žฅ ์ˆ˜๊ฐ€ 10๋งŒ๊ฐœ๋‹ˆ๊นŒ, ์ด๊ฑธ ๋‹ค ๋Œ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋ง‰๋ง‰ํ•ด์ง„๋‹ค. ๊ทธ๋ฆผ์„ ๊ทธ๋ ค์„œ ์–ด๋–ค ์ƒํ™ฉ์ธ์ง€ ๋” ์ž˜ ํŒ๋‹จํ•ด๋ณด์ž. ![[Drawing 2026-02-17 14.06.51.excalidraw.png]] ์ผ๋‹จ ์˜ˆ์ œ 1๋ฒˆ์€ ์ด๋Ÿฐ๋ฐ, ํ . ํ™•์‹คํžˆ ์ •๋ฅ˜์žฅ๋ณด๋‹จ ๋…ธ์„  ๋‹จ์œ„๋กœ ์–ด๋–ป๊ฒŒ ์ž˜ ๋ณด๊ณ ์‹ถ๊ธด ํ•˜๋‹ค. ๋…ธ์„ ์€ ์ด $5 \times X = 500$๊ฐœ์ด๋‹ค. ์ด๋•Œ, ๋…ธ์„ ์˜ ํ™˜์Šน ๊ฐ ์ •๋ฅ˜์žฅ $N$๊ฐœ๋งˆ๋‹ค $\binom{5}{2}$ ๊ฐœ์ด๋ฏ€๋กœ ์ตœ๋Œ€ $100\,000 \times = 1\,000\,000$๊ฐœ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ค‘๋ณต๋„ ์ œ๊ฑฐํ• ์ˆ˜๋„ ์žˆ๊ณ . ์•„? ์ด๊ฒŒ ๋…ธ์„ ์ด ์ถฉ๋ถ„ํžˆ ์ ์œผ๋‹ˆ, ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ์ด ๊ฐ€๋Šฅํ•ด๋ณด์ธ๋‹ค. ์ฟผ๋ฆฌ๋Š” ์ •์ ์— ๋Œ€ํ•ด ๋“ค์–ด์˜ค๋‹ˆ, $U_i, V_i$๊ฐ€ ๊ฐ๊ฐ 5๊ฐœ ๋…ธ์„ ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ 25๊ฐ€์ง€์— ๋Œ€ํ•ด ๋…ธ์„ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ’ป ํ’€์ด # ์ฝ”๋“œ (C++): void solve(){ int N, X; cin >> N >> X; vector<array<int, 5>> bus(N); rep(i, 0, N) rep(j, 0, 5) cin >> bus[i][j]; auto toIdx = [&](pii p){ return p.first*X + (p.second - 1); }; vector<vector<int>> dist(5*X, vector<int>(5*X, 1e9)); rep(i, 0, 5*X) dist[i][i] = 0; rep(i, 0, N) rep(j, 0, 5) rep(k, j+1, 5){ int u = toIdx({j, bus[i][j]}), v = toIdx({k, bus[i][k]}); dist[u][v] = dist[v][u] = 1; } rep(k, 0, 5*X) rep(i, 0, 5*X) rep(j, 0, 5*X) dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]); int Q; cin >> Q; while(Q--){ int u, v; cin >> u >> v; int ans = 1e9; rep(i, 0, 5) rep(j, 0, 5){ int idx_u = toIdx({i, bus[u-1][i]}), idx_v = toIdx({j, bus[v-1][j]}); ans = min(ans, dist[idx_u][idx_v]); } cout << (ans == 1e9 ? -1 : ans+1) << "\n"; } } ๐Ÿ”’ ๊ตฌํ˜„ ์ฝ”๋“œ ์ž ๊ธˆ

BOJ 10044 ๅฐ็ฑ ๅŒ… (Xiao Long Bao)

·513 words·3 mins
w## ๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด ๋งํฌ: https://www.acmicpc.net/problem/10044 ๋ฒˆ์—ญ ๋ฌธ์ œ # JOI ๊ตฐ์€ ์ ์‹ฌ์œผ๋กœ ์ค‘ํ™”์š”๋ฆฌ์ง‘์—์„œ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค๋ฅผ ๋จน๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ƒค์˜ค๋กฑ๋ฐ”์˜ค๋Š” ์†์žฌ๋ฃŒ์™€ ๋œจ๊ฑฐ์šด ๊ตญ๋ฌผ์„ ๋ฐ€๊ฐ€๋ฃจ ํ”ผ๋กœ ์‹ผ ์š”๋ฆฌ๋กœ, ๋จน์„ ๋•Œ ๊ตญ๋ฌผ์ด ์ฃผ์œ„๋กœ ํŠ€๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. JOI ๊ตฐ์ด ์ฃผ๋ฌธํ•œ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค ์„ธํŠธ๋Š” ์†์žฌ๋ฃŒ๋‚˜ ๊ตญ๋ฌผ์ด ๋‹ค๋ฅธ N๊ฐœ์˜ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. N๊ฐœ์˜ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค๋Š” ๋“ฑ๊ฐ„๊ฒฉ์œผ๋กœ ์ผ๋ ฌ๋กœ ๋†“์—ฌ ์žˆ์œผ๋ฉฐ, ์ˆœ์„œ๋Œ€๋กœ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค. i๋ฒˆ์งธ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค์™€ j๋ฒˆ์งธ ์ƒค์˜ค๋กฑ๋ฐ”์˜ค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ์ ˆ๋Œ“๊ฐ’ |i - j|์ด๋‹ค.

BOJ 7008 Double Trouble

·627 words·3 mins
๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/7008 ๋ฒˆ์—ญ ๋ฌธ์ œ # Alice Catherine Morris์™€ ๊ทธ๋…€์˜ ์—ฌ๋™์ƒ Irene Barbara๋Š” ์ž์ฃผ ์ด๋ฉ”์ผ์„ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋„์ฒญ์„ ๊ฒฝ๊ณ„ํ•˜๋ฉฐ ํ†ต์‹  ๋‚ด์šฉ์„ ๋น„๋ฐ€๋กœ ์œ ์ง€ํ•˜๊ณ ์ž, ๊ทธ๋“ค์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋‘ ๋‹จ๊ณ„๋กœ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋น„์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„: ๊ฐ ๋ฌธ์ž๋ฅผ ์•ŒํŒŒ๋ฒณ์—์„œ s ์œ„์น˜ ๋’ค์˜ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (1 <= s <= 25) - ์ด๋ฅผ s๋งŒํผ์˜ ์‹œํ”„ํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„ 1์˜ ๊ฒฐ๊ณผ๋ฅผ m๊ฐœ์˜ ๋ฌธ์ž๋กœ ๋œ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๊ทธ๋ฃน์˜ ๋ฌธ์ž๋“ค์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•ฉ๋‹ˆ๋‹ค (5 <= m <= 20). ๋ฉ”์‹œ์ง€์˜ ๊ธธ์ด๊ฐ€ m์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด, ๋งˆ์ง€๋ง‰ k๊ฐœ(m๋ณด๋‹ค ์ž‘์€)์˜ ๋ฌธ์ž๋“ค์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, s = 2์ด๊ณ  m = 6์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. ํ‰๋ฌธ์ด “Meet me in St. Louis, Louis.“๋ผ๋ฉด, ๋ถˆํ•„์š”ํ•œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด: