·960 words·5 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/34609 ๋ฒ์ญ ๋ฌธ์ # $1$๋ฒ๋ถํฐ $n$๋ฒ๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง $n$์ก์ด์ ๊ฝ์ด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ผ๋ ฌ๋ก ๋์ฌ ์๋ค. ๊ฐ ๊ฝ์ ๋ฐฑํฉ(lily) ๋๋ ์ฅ๋ฏธ(rose) ์ค ํ๋์ด๋ค. $0$ ์ด์ $n$ ์ดํ์ ์ ์ $j$์ ๋ํด, $l_j$๋ฅผ ์ผ์ชฝ $j$๊ฐ์ ๊ฝ ์ค ๋ฐฑํฉ์ ์, $r_j$๋ฅผ ์ค๋ฅธ์ชฝ $n - j$๊ฐ์ ๊ฝ ์ค ์ฅ๋ฏธ์ ์๋ผ ํ์.
·197 words·1 min
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/28359 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # ์ผ๋จ ๋ชจ๋ $P$์ ๋ชฐ์๋ฃ๊ฑฐ๋, $Q$์ ๋ชฐ์๋ฃ๊ฑฐ๋๋ ๊ฐ๋ฅํ๋ ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์์ ํฉ์ ๋๋ ์ฌ์ ๋กญ๊ฒ ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฐ๋ฐ, ๋ชจ๋ ์๊ฐ ๊ฐ๋ค๊ณ ์๊ฐํด๋ณด์. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ์๋ $P$์ $Q$์ ๋์์ ์ํ๋๋ฐ… ๋์์ ์ํ ์ ์๋ ์๋ฅผ ์ด๋ป๊ฒ ์ ์ดํ ์ ์์ง? ๋์์ ์ํ ์๊ฐ ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ ์์ผ ์๋ ์๋ค. ์ด๋ค ์์ ๊ทธ ๊ฐ์๋ฅผ ๊ณฑํ ๊ฐ์ด ์ต๋์ธ ์๋ฅผ ๊ณจ๋ผ์, ๋งจ ๋ค๋ก ๋ณด๋ด์. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ int N; cin >> N; map<int, int> mp; int ans = 0; rep(i, 0, N){ int x; cin >> x; mp[x]++; ans += x; } int mxIdx = -1, mxVal = -1; for(auto [k, v]: mp){ if(k*v > mxVal){ mxVal = k*v; mxIdx = k; } } ans += mxVal; vector<int> v1, v2; for(auto [k, v]: mp){ if(k < mxIdx) rep(i, 0, v) v1.push_back(k); else if(k > mxIdx) rep(i, 0, v) v2.push_back(k); } rrep(i, 0, v2.size()) v1.push_back(v2[i]); rep(i, 0, mp[mxIdx]) v1.push_back(mxIdx); cout << ans << '\n'; for(auto x: v1) cout << x << ' '; } ๐ ๊ตฌํ ์ฝ๋ ์ ๊ธ
·141 words·1 min
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/2437 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # $1, 2, 4, 8, 16, \cdots$์ ์ถ๋ก ๋ชจ๋ ์์ ์ ์๋ฅผ ์ธก์ ํ ์ ์์์ด ์๋ช
ํ๋ค. ์ด ์ด์ ๋ฅผ ์ดํด๋ณด๋ฉด, $X$๋ผ๋ ๋ฌด๊ฒ์ ์ถ๊ฐ ์์๋, $X-1$๊น์ง์ ๋ชจ๋ ์ ์๋ฅผ ํํํ ์ ์๋ค๋ฉด ํํํ ์ ์๋ ์ต๋์น + 1์ด ๋ต์ด ๋๋ค. ์ถ๋ฅผ ์์๊ฒ๋ถํฐ ์ ๋ ฌํด์, ๋น ์ง๋ ์ ์์ด ๋ฌด์จ ์์ ์ ์๊น์ง ์ต๋ํ ์ด ์ ์๋์ง ํ์ธํ์. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ int N; cin >> N; vector<ll> v(N); rep(i, 0, N) cin >> v[i]; sort(all(v)); ll sum = 0; rep(i, 0, N){ if(v[i] > sum + 1){ cout << sum + 1 << "\n"; return; } sum += v[i]; } cout << sum + 1 << "\n"; } ๐ ๊ตฌํ ์ฝ๋ ์ ๊ธ
·244 words·2 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/14939 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # ๋งจ ์์ค์ ์ด์ฐ์ ์ฐ ์ผ์ฒ๋ฆฌ๋ฅผ ๋๋๋ค๊ณ ๊ฐ์ ํ์. ๋๋ฒ์งธ ์ค๋ถํฐ, ๊ทธ ์์ค์ ๋จ์ ์ ๊ตฌ๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ ํด๋น ์นธ ์๋์ ์ค์์น๋ฅผ ์ปจํธ๋กค ํ๋ ๋ฐฉ๋ฒ์ด ์ ์ผํ๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋งจ ์์ค์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ $= 2^{10} = 1024$๊ฐ์ง์ ๋ํด ํด๋ณผ ์ ์๊ณ , ์๋ฎฌ๋ ์ด์
์ $100 \times 100 = 10000$๋ฒ์ผ๋ก ์ถฉ๋ถํ ์๊ฐ ๋ด๋ก ๋ค์ด์จ๋ค. ๋งจ ์๋ซ์ค์ ์ผ์ง ์ ๊ตฌ๊ฐ ๋จ์์์ผ๋ฉด ์๋จ์ ์ ์ํ๋ค. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ vector<string> board(10); rep(i, 0, 10) cin >> board[i]; int answer = 1e9; rep(bit, 0, 1<<10){ vector<string> cboard = board; int cnt = 0; auto press = [&](int r, int c){ cnt++; cboard[r][c] = (cboard[r][c] == 'O' ? 'X' : 'O'); if(r > 0) cboard[r-1][c] = (cboard[r-1][c] == 'O' ? 'X' : 'O'); if(r < 9) cboard[r+1][c] = (cboard[r+1][c] == 'O' ? 'X' : 'O'); if(c > 0) cboard[r][c-1] = (cboard[r][c-1] == 'O' ? 'X' : 'O'); if(c < 9) cboard[r][c+1] = (cboard[r][c+1] == 'O' ? 'X' : 'O'); }; rep(c, 0, 10) if(bit & (1 << c)) press(0, c); rep(r, 1, 10) rep(c, 0, 10) if(cboard[r-1][c] == 'O') press(r, c); bool ok = true; rep(c, 0, 10) if(cboard[9][c] == 'O') ok = false; if(ok) answer = min(answer, cnt); } if(answer == 1e9) cout << -1 << '\n'; else cout << answer << '\n'; } ๐ ๊ตฌํ ์ฝ๋ ์ ๊ธ
·622 words·3 mins
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/27421 ๋ฒ์ญ ๋ฌธ์ # Taro๋ ์ฅ๋๊ฐ ์ฒ ๋ ์ ๋ก ์ธํธ๋ฅผ ๊ฐ์ง๊ณ ๋๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ ๋ก๋ ์ง๊ฐ ์ค์ฌ๊ฐ(90๋ ๊ฐ๋)์ ๊ฐ์ง ํธ ๋ชจ์์ด์ง๋ง, ๋ฐ์ง๋ฆ์ ๋ค์ํฉ๋๋ค. Taro๋ ์ด ๋ชจ๋ ์ ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๋ฃจํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ๋ก ์ธํธ๊ฐ ํ๋์ ๋ฃจํ๋ฅผ ํ์ฑํ๋ค๋ ๊ฒ์ ๋ชจ๋ ์ ๋ก์ ์ ๋์ด ๋ค๋ฅธ ์ ๋ก์ ๋ถ๋๋ฝ๊ฒ ์ฐ๊ฒฐ๋๊ณ , ๋ชจ๋ ์ ๋ก๊ฐ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋ ์ ๋ก์ ์ฐ๊ฒฐ๋์ด ์์ ๋๋ฅผ ์๋ฏธํฉ๋๋ค. Taro๊ฐ ์ด๊ฒ์ ๋ฌ์ฑํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ์ธ์.
·151 words·1 min
๐ ๋ฌธ์ ์ ๋ณด # ๋งํฌ: https://www.acmicpc.net/problem/34830 ๐ง ๊ด์ฐฐ ๋ฐ ์ ๊ทผ # ๋ฌธ์ ์ํฉ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ดํด๋ณด์ $a, b$๊ฐ ์์ ๋, $a - b$ ๋ฅผ ํ๋ฒ ์ง๋๊ฐ๋ฉด ๋๋ค. $a, b, c$๊ฐ ์์ ๋, $a - b, b- c, c-a$๋ฅผ ํ๋ฒ์ฉ ์ง๋๊ฐ์ผํ๋ค. $a, b,c ,d$๊ฐ ์์ ๋, $a-b, a-c, a-d, b-c, b-d, c-d$๋ฅผ ํ๋ฒ์ฉ ์ง๋๊ฐ์ผ ํ๋ค. ์ด๋ฅผ ๊ทธ๋ํ ์ด๋ก ์ผ๋ก ํด์ํ ์ ์์ง ์์๊น? ๊ทธ๋ํ๊ฐ ์๊ณ , ๊ฐ ๊ฐ์ ์ ํ๋ฒ์ฉ ์ง๋๋, ์์ ๊ณผ ์ข
์ ์ด ๋ฌ๋ผ๋ ๋๋ค ํ๋ถ๊ทธ๋ฆฌ๊ธฐ๊ฐ ๊ฐ๋ฅํ๊ฐ? ์ด์ ์ด ๋ฌธ์ ๋ ์ค์ผ๋ฌ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฌธ์ ๋ก ๋ฐ๋๋ค. ์ค์ผ๋ฌ ๊ฒฝ๋ก๋, ํ์์ ์ด ๋๊ฐ ์ดํ์ผ๋ ๊ฐ๋ฅํ๋ค. ์ ์ ์ด $N$๊ฐ ์๋ค๊ณ ํ๋ฉด, ๊ทธ๋ํ๋ ์์ ๊ทธ๋ํ์ด๋ฏ๋ก ๊ฐ ์ ์ ์ ๋ถ์ด์๋ ๊ฐ์ ์ $N-1$๊ฐ์ด๋ค. $N$์ด ํ์๋ผ๋ฉด, ๋ชจ๋ $N$๊ฐ์ ์ ์ ์ ์ง์์ ์ด๋ค. $N$์ด ์ง์๋ผ๋ฉด, ๋ชจ๋ $N$๊ฐ์ ์ ์ ์ ํ์์ ์ด๋ค. ๋ฐ๋ผ์, $N-2$๊ฐ์ ์ ๋ค์ ์ฐ๊ฒฐํด์ ํ์์ ์ด 2๊ฐ๊ฐ ๋๋๋ก ๋ง๋๋๊ฒ์ด ์ต์ ์ด๋ค. ๐ป ํ์ด # ์ฝ๋ (C++): void solve(){ ll N; cin >> N; ll ans = N * (N-1) / 2; if(N%2 == 0) ans += N/2 - 1; cout << ans; }