๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ

Solution rust soulution Memo ๊ทธ๋ฆฌ๋””๋Š” ๋งค๋ฒˆ ๋ฐ˜๋ณตํ•˜์ง€๋งŒ, ๊ทธ๋ฆฌ๋””๋กœ ํ’€๋ฆฐ๋‹ค๋Š” ๊ฐ๊ฐ์„ ๊ฐ–๋Š”๊ฒŒ ์–ด๋ ต๊ณ  ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋Œ€์‹  ํ™•์‹คํ•ด์ง€๋ฉด ๊ตฌํ˜„์€ ์‰ฝ๋‹ค. ์ข…๋ฃŒ์‹œ๊ฐ„, ์‹œ์ž‘์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ์Šค์ผ€์ค„์„ ์ •๋ ฌํ•˜๊ณ  ์ข…๋ฃŒ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋น ๋ฅธ ์ˆœ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์›์†Œ์™€ validํ•˜์—ฌ ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€, ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. // Baekjoon - 1931 // https://www.acmicpc.net/problem/1931 use std::io::{self, Read, Write}; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin.read_to_string(&mut input).unwrap(); let mut lines = input....

May 6, 2025

๊ฐ„๋‹จํ•œ dfs + backtracking ๋ฌธ์ œ

Solution rust soulution Memo ๋ญ”๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊ทธ๋ž˜ํ”„ dfs๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๊ธธ๋ž˜ ๋‹ค๋ฅธ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜ ํ•˜๊ณ  ์ฐพ์•„๋ด„ ๋‚˜๋Š” dfs๋ฅผ ํ’€์—ˆ๋‹ค. ์•„๋งˆ ๋ฐฑํŠธ๋ž˜ํ‚น๋•Œ๋ฌธ์— ์™„ํƒ์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋“ฏ? // Baekjoon - 1987 // https://www.acmicpc.net/problem/1987 use std::io::{self, Read, Write}; const DY: [i32; 4] = [-1, 0, 1, 0]; const DX: [i32; 4] = [0, 1, 0, -1]; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin.read_to_string(&mut input).unwrap(); let mut lines = input....

May 6, 2025

ํ”ผ๋ณด ํ˜•์‹์˜ dp 2

Solution rust soulution Memo ์ ํ™”์‹์„ ์„ธ์šฐ๋Š” ์ „ํ˜•์ ์ธ dp ๋ฌธ์ œ n์ด ํ™€์ˆ˜๋ฉด ์ฑ„์šธ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐ”๋กœ 0 ์ถœ๋ ฅ n = 2์ผ ๋•Œ ๊ธฐ๋ณธ ์ผ€์ด์Šค๋Š” 3๊ฐ€์ง€ n = 4์ผ ๋•Œ๋Š” ๊ธฐ๋ณธ ์ผ€์ด์Šค 3 * dp[2] + ํŠน์ด ์ผ€์ด์Šค(2) 1๊ฐœ โ†’ ์ด 11๊ฐœ ์ ํ™”์‹์€ dp[n] = dp[n - 2] * 3 + (dp[n - 4] + dp[n - 6] + โ€ฆ + dp[0]) * 2 ์™€ ๊ฐ™์Œ ํŠน์ด ์ผ€์ด์Šค๋Š” n์ด 4 ์ด์ƒ์ผ ๋•Œ๋ถ€ํ„ฐ ๋“ฑ์žฅํ•˜๋ฉฐ, ๋งค๋ฒˆ 2์”ฉ ๊ณฑํ•ด์ง„๋‹ค dp[0] = 1์„ ๊ธฐ์ค€์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ (dp[0]์€ ์•ˆ์”€) ๋ฐ˜๋ณต๋ฌธ์€ ์ง์ˆ˜ ๋‹จ์œ„๋กœ๋งŒ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ step_by(2) ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค // Baekjoon - 2133 // https://www....

May 6, 2025

dp ์ปดํ“จํ„ฐ ๋ฆฌ์Šคํƒ€ํŠธ

Solution rust soulution Memo Rust๋Š” ๋ธŒ๋ฃจํŠธํฌ์Šค(๋ฐฑํŠธ๋ž˜ํ‚น)๋กœ๋„ ์ข…์ข… ํ†ต๊ณผ๋˜๊ธธ๋ž˜ ์ฒ˜์Œ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ ‘๊ทผํ–ˆ์ง€๋งŒ, ์ด ๋ฌธ์ œ์—์„œ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•จ. (์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ๋ถ€๋ถ„์ด ๊ทธ ์ฝ”๋“œ) ์ด ๋ฌธ์ œ๋Š” ์ „ํ˜•์ ์ธ 0-1 Knapsack ๋ฌธ์ œ๋‹ค. ํ•ต์‹ฌ ์•„์ด๋””์–ด: ๋ชจ๋“  ๋น„์šฉ(์ฝ”์ŠคํŠธ)์— ๋Œ€ํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ”์ดํŠธ๋ฅผ dp๋กœ ๊ตฌํ•จ ์ด dp ๋ฐฐ์—ด์—์„œ target_bytes ์ด์ƒ์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ์ฐพ์•„๋ƒ„ dp[i]๋Š” ๋น„์šฉ์ด i์ผ ๋•Œ ํ™•๋ณด ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๋ฏธํ•จ ์ตœ์ข…์ ์œผ๋กœ dp ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ target_bytes ์ด์ƒ ํ™•๋ณด๋˜๋Š” ์ง€์  ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๋น„์šฉ(cost)์„ answer๋กœ ์ถœ๋ ฅ // Baekjoon - 7579 // https://www....

May 6, 2025

dp ํ”ผ๋ณด๋‚˜์น˜ ๋ฌธ์ œ

Solution rust soulution Memo ์ „ํ˜•์ ์ธ dp fibo ๋ฌธ์ œ ์‚ฌ์‹ค ์ด๋Ÿฐ๊ฑด dp๋กœ์˜ ์˜์˜๋ณด๋‹ค๋Š” ๊ทธ๋ƒฅ ๋ฌธ์ œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ํ”ผ๋ณด๋‚˜์น˜๋ฅผ ์š”๊ตฌํ•˜๋Š”๊ฒŒ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋์ธ๊ฒƒ๊ฐ™๋‹ค. // Baekjoon - 11726 // https://www.acmicpc.net/problem/11726 use std::io::{self, Read, Write}; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin.read_to_string(&mut input).unwrap(); let mut lines = input.lines(); let n: usize = lines.next().unwrap().parse().unwrap(); if n == 1 { writeln!(stdout, "1").unwrap(); return; } let mut dp = vec!...

May 5, 2025

dp, ์ตœ๊ณ ํ•ฉ ๋ถ€๋ถ„์ˆ˜์—ด ์ฐพ๊ธฐ

Solution rust soulution Memo dp๋ฌธ์ œ ์ƒ๊ฐ์ด ๊ผฌ์ด๋ฉด ๋น…ํŠธ๋กค์„ ํ•œ๋‹ค. ์ฃผ์„์˜ ํ’€์ด๊ฐ€ ํ‹€๋ ธ์ง€๋งŒ ์ด์ƒํ•œ์ง“์„ ํ•œ ์ฝ”๋“œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜์—ด, dp, psum์„ ์ƒ๊ฐํ•˜๋ฉฐ ์กฐ๊ธ‰ํ•˜๊ฒŒ ๊ตด๋‹ค๊ฐ€ ์˜๋ฏธ์—†๋Š”์ง“์„ ์„ธ๋ฒˆ์ด๋‚˜ ํ–ˆ๋‹ค. ๋ณต๊ธฐํ•˜๋ฉด psum์„ ๊ตฌํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค. ๊ตฌ๊ฐ„ํ•ฉ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜์—ด๊ฐ’์œผ๋กœ ๋ธŒ๋ฃจํŠธํฌ์Šค ํ’€์ด๋ฅผ ํ–ˆ๋‹ค. ์ง์ „ ๊ตฌ๊ฐ„ํ•ฉ๊ณผ ์ง€๊ธˆ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’๊ณผ์˜ ์—ฐ๊ด€๊ด€๊ณ„์— ์ง‘์ค‘์„ ์ „ํ˜€ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. // Baekjoon - 1912 // https://www.acmicpc.net/problem/1912 use std::cmp::max; use std::io::{self, Read, Write}; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout()....

May 5, 2025

๋ธŒ๋ฃจํŠธํฌ์Šค ๊ฒŒ์ž„

Solution rust soulution Memo ๋ถ€๋ฅดํŠธ ํฌ์Šค ๋ฌธ์ œ ๊ตฌํ˜„์ด ๊ท€์ฐฎ์ง€๋งŒ ์ž…๋ ฅ์ด ์ œํ•œ๋˜์–ด์žˆ๋‹ค. ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ง๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์•ˆ๋– ์˜ค๋ฅด๋ฉด ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋จ // Baekjoon - 3085 // https://www.acmicpc.net/problem/3085 use std::cmp::max; use std::io::{self, Read, Write}; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin.read_to_string(&mut input).unwrap(); let mut lines = input.lines(); let n: usize = lines.next().unwrap().parse().unwrap(); let mut board: Vec<Vec<char>> = vec![]; for _i in 0....

May 5, 2025

Python PS ์ •๋ฆฌ ๐Ÿ”„

ํŒŒ์ด์ฌ PS 1๋‹จ๊ณ„: ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ์™„์ „์ •๋ณต ๐Ÿ“ฅ 1. ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ ๊ธฐ๋ณธ ์ž…๋ ฅ # ํ•œ ์ค„ ์ž…๋ ฅ n = int(input()) s = input() a, b = map(int, input().split()) # ์—ฌ๋Ÿฌ ์ค„ ์ž…๋ ฅ arr = [] for _ in range(n): arr.append(int(input())) # ๋ฆฌ์ŠคํŠธ ํ•œ๋ฒˆ์— ์ž…๋ ฅ numbers = list(map(int, input().split())) ๋น ๋ฅธ ์ž…๋ ฅ (sys.stdin) import sys input = sys.stdin.readline # ์ฃผ์˜: readline()์€ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ n = int(input()) # ์ˆซ์ž๋Š” ์ž๋™์œผ๋กœ ๊ฐœํ–‰๋ฌธ์ž ์ œ๊ฑฐ s = input()....

May 3, 2025

Rust Iter ์ •๋ฆฌ ๐Ÿ”„

Rust Iterator ์ธํ„ฐํŽ˜์ด์Šค ์ข…ํ•ฉ 1. ํ•ต์‹ฌ ํŠธ๋ ˆ์ดํŠธ Iterator ํŠธ๋ ˆ์ดํŠธ pub trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; // ... ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ ๊ตฌํ˜„ ๋ฉ”์„œ๋“œ๋“ค } IntoIterator ํŠธ๋ ˆ์ดํŠธ pub trait IntoIterator { type Item; type IntoIter: Iterator<Item = Self::Item>; fn into_iter(self) -> Self::IntoIter; } FromIterator ํŠธ๋ ˆ์ดํŠธ pub trait FromIterator<A> { fn from_iter<T>(iter: T) -> Self where T: IntoIterator<Item = A>; } 2. ๋ฐ˜๋ณต์ž ์ƒ์„ฑ ๋ฉ”์„œ๋“œ ๊ธฐ๋ณธ ์ปฌ๋ ‰์…˜ ๋ฐ˜๋ณต์ž iter(): ๋ถˆ๋ณ€ ์ฐธ์กฐ ๋ฐ˜๋ณต์ž (&T) iter_mut(): ๊ฐ€๋ณ€ ์ฐธ์กฐ ๋ฐ˜๋ณต์ž (&mut T) into_iter(): ์†Œ์œ ๊ถŒ ์ด์ „ ๋ฐ˜๋ณต์ž (T) ๋ฒ”์œ„ ๋ฐ˜๋ณต์ž // ๋ฒ”์œ„ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ˜๋ณต์ž ์ƒ์„ฑ let range = 1....

May 3, 2025

brute force ์ฒด์ŠคํŒ

Solution rust soulution Memo ๋ฌธ์ œ ์ž์ฒด๋Š” ๋ธŒ๋ฃจํŠธํฌ์Šค์˜ ๋А๋‚Œ์ด ๋‚ฌ๊ณ  ๊ตฌํ˜„๋งŒ ์‹ ๊ฒฝ์“ฐ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค. O((N-7) * (M-7) * 128), n,m ์ƒํ•œ์ด 50์ด๋‹ค // Baekjoon - 1018 // https://www.acmicpc.net/problem/1018 use std::{ cmp::min, io::{self, Read, Write}, }; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin.read_to_string(&mut input).unwrap(); let mut lines = input.lines(); let mut iter = lines.next().unwrap().split_whitespace(); let m: usize = iter.next().unwrap().parse().unwrap(); let n: usize = iter....

May 3, 2025