์ธ๋งํฌ์ด์ ๋ฎคํ ์ค ๐
์ฌ๋ฌ๊ฐ์ง ์ฌ์ ๋ก ์์ฃผ ๋ง๋ฅ๋จ๋ ค์ ๋ค์ ์ ๋ฆฌ
์ฌ๋ฌ๊ฐ์ง ์ฌ์ ๋ก ์์ฃผ ๋ง๋ฅ๋จ๋ ค์ ๋ค์ ์ ๋ฆฌ
๋ชจ๋ ๋ด์ฉ ์ถ์ฒ๋ : ํ๋ก๊ทธ๋๋ฐ-๋ฌ์คํธ ํ์ ๊ด๋ จ ๊ธธ์ด๋ ํ์ ์ ์ผ๋ถ, ์ฌ๋ผ์ด์ค๋ ๊ธธ์ด ์ ํ์ด ์์ผ๋ฏ๋ก ๋ณ์์ ์ง์ ์ ์ฅํ๊ฑฐ๋ ํจ์ ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค. ์ฌ๋ผ์ด์ค ๋ ํผ๋ฐ์ค๋ ํป ํฌ์ธํฐ๋ก ์ฌ๋ผ์ด์ค์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๊ทธ ์์ ์๋ ์์์ ๊ฐ์๋ก ๊ตฌ์ฑ๋๋ 2์๋ ํฌ๊ธฐ์ ๊ฐ์ด๋ค. ์ด๋ ๊ด๋ จ ๋ฌ์คํธ์์๋ ๋ชจ๋ ์ด๋์ด ์๋ณธ์ ๋ฏธ์ด๊ธฐํ ์ํ๋ก ๋๋ ๋ฐ์ดํธ ๋จ์์ ์์ ๋ณต์ฌ๋ค. ๋ณต์ฌ๋ ์๋ณธ์ ์ด๊ธฐํ ์ํ๋ฅผ ์ ์งํ๋ค๋ ์ ๋ง ์ ์ธํ๋ฉด ์ด๋์ค๊ฐ ๋๊ฐ๋ค. ์ด๋๊ณผ ๋ ํผ๋ฐ์ค ์นด์ดํธ ๊ธฐ๋ฐ์ ํฌ์ธํฐ๋ ์์ ๊ด๊ณ ํธ๋ฆฌ์ ๊ฒฝ์ง์ฑ์ ์ํํ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ค....
Solution kotlin soulution Memo ๋นํธ๋ง์คํน + dfs ํ์ด ๊ฐ ๋ฐฉ์ ํฌ๊ธฐ๋ฅผ ์ ๋ถ ๊ณ์ฐํ๊ณ ๋ฐฉ ๋ฒํธ๋ฅผ ๋งํนํ๋ค. ๋ฐฉ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ฐฉ์ ํฉ์ณ๋ณด๋ ์์ผ๋ก ๋ธ๋ฃจํธ ํฌ์ค ํ์ package problems.baekjoon.p2234 import java.io.BufferedReader import java.io.InputStreamReader fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val (x, y) = readLine()!!.split(" ").map { it.toInt() } val graph = mutableListOf<MutableList<Int>>() repeat(y) { graph.add(readLine()!!.split(" ").map { it.toInt() }.toMutableList()) } val roomId = MutableList(y) { MutableList(x) { -1 } } val roomSizes = mutableListOf<Int>() var roomCount = 0 for (i in 0 until y) { for (j in 0 until x) { if (roomId[i][j] == -1) { val size = dfs(graph, roomId, i, j, y, x, roomCount) roomSizes....
As-Is ์ผ๋ฐ์ ์ธ ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ๊ฒฐ์ ํ๋ฆ ํด๋ผ์ด์ธํธ๊ฐ ๊ฒฐ์ ๋ฅผ ์์ฒญ ์๋ฒ๊ฐ ๊ฒฐ์ ๋ฅผ ์งํํ๋๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์๋ต ํด๋น ๋ด์ฉ์ ํ ๋๋ก pg์ฌ ํธ์ถ pg์ฌ์ ์ฌ์ฉ์ ์ธ์ฆ ์ดํ ์ฝ๋ฐฑ ์ฝ๋ฐฑ๋ฐ์ ์ ๋ณด๋ฅผ ์ํ๋ก ์ ์ฅํ๊ณ ์๋ ์ ๋ณด์ ๋์กฐํ๊ณ , ๋ฌธ์ ์์ผ๋ฉด pg์ฌ๋ก ์น์ธ api ํธ์ถ pg์ฌ์ ์น์ธ ์๋ต ์น์ธ ์ฌ๋ถ๋ฅผ db์ ์ ์ฅ (๊ฒฐ์ ์น์ธ ์๋ต, ๋ก๊ทธ, ๋์ฌ์์ ์ ํ์ํ ์ ๋ณด ๋ฑ) ํ๊ณ์ฒ๋ฆฌ๋ฅผ ์งํํ๋ ์๋ฒ์ ์ ์ฅ To-Be ์๋ก์ด ์๊ตฌ์ฌํญ๋ค (๋ฐฐ๊ฒฝ) ํ์ฌ ๊ทธ๋ฃน์ ์คํ๋ผ์ธ ๋งค์ฅ์์ ํ๋งค๋ ์ํ๊น์ง ์์ ์๋น์ค์ ๋์์ด ๋จ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ณ์ด์ฌ์์ ํ์ ์ด ํ์ํ๊ฒ ๋์๋ค....
Solution rust soulution Memo dp[y][x][state] = ways ์ง๊ธ ํ์ดํ ๋์ ์ขํ์ ์ํ์ ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐํ ์ ๋ฐฉ์์ผ๋ก dp #[allow(clippy::all)] #[allow(unused_must_use, unused_doc_comments)] fn solve<R: BufRead, W: Write>(io: &mut IO<R, W>) -> Option<()> { let n = io.get(0usize)?; let grid = io.get(vec![vec![0usize; n]; n])?; // 0 - horizontal, 1 - vertical, 2 - diagonal // dp[i][j][ํ์ดํ์ํ] = ๊ฒฝ์ฐ์ ์ let mut dp = vec![vec![vec![0usize; 3]; n]; n]; // ์ด๊ธฐ ์ํ: (0, 1)์ horizontal ํ์ดํ dp[0][1][0] = 1; for i in 0....
Solution rust soulution Memo ๋ชปํ์๋ค! ๐ฅฒ ๋นํธ๋ง์คํน์ ์จ์ ์ฐ๋ ํ์ด๊ฐ ์๋๊ฑธ ์์๋๋ฐ, ๊ทธ๊ฑธ ๋ ์ฌ๋ฆฌ์ง ๋ชปํ๊ณ ์๊ฐ์ ๋ณด๋ด๋ค๊ฐ ์ง์ณ์ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค. fn tsp(n: usize, grid: &[Vec<usize>]) -> usize { // dp[mask][i] = ์ง๊ธ ์์น๊ฐ i ์ด๋ฉฐ, mask๋ก ํํ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ์๋ ์ต์ ๋น์ฉ let mut dp = vec![vec![usize::MAX; n]; 1 << n]; // 0001 0๋ฒ ๋์๋ง ๋ฐฉ๋ฌธํ ๋น์ฉ 0 dp[1][0] = 0; // ๋ชจ๋ ๋ฐฉ๋ฌธ ๊ฒฝ๋ก์์ for mask in 1..(1 << n) { // ํด๋น ๋ฐ๋ณต๋ฌธ์ ์์ ์ง์ ์ ์ฐพ๋๋ค for i in 0....
Topdown vs Bottomup Topdown ๋ณดํต ์ฌ๊ท์ ์ธ ํ์ ์ฌ๊ทํจ์ ํธ์ถ๋ก ์ธํ ์ค๋ฒํค๋ Bottomup ๋ณดํต ๋ฐ๋ณต๋ฌธ์ผ๋ก dp[target]๊น์ง ํ์ ๋ชจ๋ ๊ฐ์ ์์ฑ
Solution rust soulution Memo ๋๋ฌด ํผ๊ณคํด์ ์ค๋์ ์ฌ์ด๊ฑธ๋ก dpํ๋ ๊ทธ๋ํ ํ๋ ํ์ด์ผ์ง ํ๋๋ฐ, dp๋ ์ฝ๊ฒ ๊ณจ๋์ง๋ง bfs๋ฅผ ์คํจํ๋ค. ๊ตฌ์ญ๋ณ ๋ฒํธ๋ฅผ ๋ฉ๊ธฐ๊ณ ๊ตฌ์ญ๋ณ ํฌ๊ธฐ๋ฅผ ๋ฉ๋ชจํ๋ค. 0์ผ๋ก ๋์ด์๋ ์ขํ๋ฅผ ์ํํ๋ฉฐ ์ด์ด๋ถ์ผ ์ ์๋ ๊ตฌ์ญ์ ์๋ณํ๋ค. ํด๋น ์ขํ์ ์ด์ด๋ถ์ผ ์ ์๋ ๋ชจ๋ ๊ตฌ์ญ์ max_size๋ก ๊ฐฑ์ ํ๋ค. // Baekjoon - 16932 // https://www.acmicpc.net/problem/16932 use std::collections::{HashSet, VecDeque}; use std::io; use std::io::Read; use std::io::Write; fn main() { let mut stdin = io::stdin().lock(); let mut stdout = io::stdout().lock(); let mut input = String::new(); stdin....
Rust Professional Code Rust-Professional-Code ์ฑ ์ ๋ํ ๋ด์ฉ์ ๋ฆฌ, ๊ฐ๋จํ๊ณ ํ์ํ ๋ถ๋ถ๋ง ์ ๋ฆฌํ์ฌ ๊ฐ์ธ ์ฐธ๊ณ ์ฉ ์ง๊ธ ๋์๊ฒ๋ ์ค์ํ ๋ด์ฉ๋ค๋ ๋ง์ง๋ง, ๋น์ฅ ๋์๊ฒ ํ์ํ์ง๋ ์์ ํฐ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ, ๋ค๋ฅธ ์ธ์ด ๋ฐ์ด๋๋ฆฌ์์ ํตํฉ๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ๋ง๋ค. ์ธ์ ๊ฐ๋ ํ์ํด์ง๊ฒ ์ง๋ง ๊ทธ๋ฌํ ๋ด์ฉ๋ค์ ๊ทธ ์ฆ์์ ์ฝ์ด๊ฐ๋๊ฒ ๋ซ๋ค๋ ์๊ฐ์ด ๋ค์ด ํ์ํ ๋ถ๋ถ๋ง ๋ฆฌ๋ง์ธ๋์ฉ์ผ๋ก ๋ฐ์ทํด์ ์ ๋ฆฌํ๋ ค ํ๋ค. Chapter 4 ๋ฐ์ดํฐ ๊ตฌ์กฐ String, str, &str, &โsatic str์ ๋ํ ์ค๋ช ๋ฌธ์์ด ํ์ ๋ค์ด ๋ง์ ํผ๋์ค๋ฝ์ง๋ง, ๊ธฐ๋ณธ๋ฐ์ดํฐ(์ฐ์์ ์ธ ๋ฌธ์์ ์ด)์ ์ํธ์์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋๋ ์ ์๊ฐํ๋ ๊ฒ์ด ์ค์ํ๋ค....
sql ์ํฐ ํจํด ์ฑ ๋งค์ผ ํ ์ฅ์ฉ ์๊ฐ๋จ๊ธฐ๊ธฐ