์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค ๐Ÿ”„

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‚ฌ์œ ๋กœ ์ž์ฃผ ๋งž๋‹ฅ๋œจ๋ ค์„œ ๋‹ค์‹œ ์ •๋ฆฌ

June 12, 2025

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Ÿฌ์ŠคํŠธ ๐Ÿ’ญ

๋ชจ๋“  ๋‚ด์šฉ ์ถœ์ฒ˜๋Š” : ํ”„๋กœ๊ทธ๋ž˜๋ฐ-๋Ÿฌ์ŠคํŠธ ํƒ€์ž… ๊ด€๋ จ ๊ธธ์ด๋Š” ํƒ€์ž…์˜ ์ผ๋ถ€, ์Šฌ๋ผ์ด์Šค๋Š” ๊ธธ์ด ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜์— ์ง์ ‘ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค. ์Šฌ๋ผ์ด์Šค ๋ ˆํผ๋Ÿฐ์Šค๋Š” ํŒป ํฌ์ธํ„ฐ๋กœ ์Šฌ๋ผ์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์™€ ๊ทธ ์•ˆ์— ์žˆ๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜๋Š” 2์›Œ๋“œ ํฌ๊ธฐ์˜ ๊ฐ’์ด๋‹ค. ์ด๋™ ๊ด€๋ จ ๋Ÿฌ์ŠคํŠธ์—์„œ๋Š” ๋ชจ๋“  ์ด๋™์ด ์›๋ณธ์„ ๋ฏธ์ดˆ๊ธฐํ™” ์ƒํƒœ๋กœ ๋‘๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ์–•์€ ๋ณต์‚ฌ๋‹ค. ๋ณต์‚ฌ๋Š” ์›๋ณธ์˜ ์ดˆ๊ธฐํ™” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋Š” ์ ๋งŒ ์ œ์™ธํ•˜๋ฉด ์ด๋„์˜ค๊ฐ€ ๋˜‘๊ฐ™๋‹ค. ์ด๋™๊ณผ ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŠธ ๊ธฐ๋ฐ˜์˜ ํฌ์ธํ„ฐ๋Š” ์†Œ์œ  ๊ด€๊ณ„ ํŠธ๋ฆฌ์˜ ๊ฒฝ์ง์„ฑ์„ ์™„ํ™”ํ•˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด๋‹ค....

June 7, 2025

๋น„ํŠธ๋งˆ์Šคํ‚น + dfs

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....

May 29, 2025

๋ถ„์‚ฐํ™˜๊ฒฝ์—์„œ ๊ฒฐ์ œ ๊ตฌํ˜„ํ•˜๊ธฐ ๐Ÿ’ญ

As-Is ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์กด ๊ฒฐ์ œ ํ๋ฆ„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฒฐ์ œ๋ฅผ ์š”์ฒญ ์„œ๋ฒ„๊ฐ€ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์‘๋‹ต ํ•ด๋‹น ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ pg์‚ฌ ํ˜ธ์ถœ pg์‚ฌ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ดํ›„ ์ฝœ๋ฐฑ ์ฝœ๋ฐฑ๋ฐ›์€ ์ •๋ณด๋ฅผ ์ƒํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ๋˜ ์ •๋ณด์™€ ๋Œ€์กฐํ•˜๊ณ , ๋ฌธ์ œ์—†์œผ๋ฉด pg์‚ฌ๋กœ ์Šน์ธ api ํ˜ธ์ถœ pg์‚ฌ์˜ ์Šน์ธ ์‘๋‹ต ์Šน์ธ ์—ฌ๋ถ€๋ฅผ db์— ์ €์žฅ (๊ฒฐ์ œ ์Šน์ธ ์‘๋‹ต, ๋กœ๊ทธ, ๋Œ€์‚ฌ์ž‘์—…์— ํ•„์š”ํ•œ ์ •๋ณด ๋“ฑ) ํšŒ๊ณ„์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์„œ๋ฒ„์— ์ €์žฅ To-Be ์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ๋“ค (๋ฐฐ๊ฒฝ) ํšŒ์‚ฌ ๊ทธ๋ฃน์˜ ์˜คํ”„๋ผ์ธ ๋งค์žฅ์—์„œ ํŒ๋งค๋œ ์ƒํ’ˆ๊นŒ์ง€ ์ˆ˜์„  ์„œ๋น„์Šค์˜ ๋Œ€์ƒ์ด ๋จ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๊ณ„์—ด์‚ฌ์™€์˜ ํ˜‘์—…์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค....

May 28, 2025

dp ํŒŒ์ดํ”„ ์ด๋™ 1

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....

May 25, 2025

dp ์™ธํŒ์› ๋ฌธ์ œ ๐Ÿคจ

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....

May 25, 2025

dp ํŒ ์œ ํ˜• ์ •๋ฆฌ ๐Ÿ“š

Topdown vs Bottomup Topdown ๋ณดํ†ต ์žฌ๊ท€์ ์ธ ํ˜•์‹ ์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ Bottomup ๋ณดํ†ต ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ dp[target]๊นŒ์ง€ ํ•˜์œ„ ๋ชจ๋“  ๊ฐ’์„ ์ƒ์„ฑ

May 25, 2025

๋นก๊ตฌํ˜„ bfs

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....

May 20, 2025

Rust Professional Code ๐Ÿฆ€

Rust Professional Code Rust-Professional-Code ์ฑ…์— ๋Œ€ํ•œ ๋‚ด์šฉ์ •๋ฆฌ, ๊ฐ„๋‹จํ•˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ •๋ฆฌํ•˜์—ฌ ๊ฐœ์ธ ์ฐธ๊ณ ์šฉ ์ง€๊ธˆ ๋‚˜์—๊ฒŒ๋„ ์ค‘์š”ํ•œ ๋‚ด์šฉ๋“ค๋„ ๋งŽ์ง€๋งŒ, ๋‹น์žฅ ๋‚˜์—๊ฒŒ ํ•„์š”ํ•˜์ง€๋Š” ์•Š์€ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋‹ค๋ฅธ ์–ธ์–ด ๋ฐ”์ด๋„ˆ๋ฆฌ์™€์˜ ํ†ตํ•ฉ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค. ์–ธ์  ๊ฐ€๋Š” ํ•„์š”ํ•ด์ง€๊ฒ ์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ๋‚ด์šฉ๋“ค์€ ๊ทธ ์ฆˆ์Œ์— ์ฝ์–ด๊ฐ€๋Š”๊ฒŒ ๋‚ซ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฆฌ๋งˆ์ธ๋“œ์šฉ์œผ๋กœ ๋ฐœ์ทŒํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค. Chapter 4 ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ String, str, &str, &โ€˜satic str์— ๋Œ€ํ•œ ์„ค๋ช… ๋ฌธ์ž์—ด ํƒ€์ž…๋“ค์ด ๋งŽ์•„ ํ˜ผ๋ž€์Šค๋Ÿฝ์ง€๋งŒ, ๊ธฐ๋ณธ๋ฐ์ดํ„ฐ(์—ฐ์†์ ์ธ ๋ฌธ์ž์˜ ์—ด)์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค....

May 19, 2025

SQL ์•ˆํ‹ฐ ํŒจํ„ด!

sql ์•ˆํ‹ฐ ํŒจํ„ด ์ฑ… ๋งค์ผ ํ•œ ์žฅ์”ฉ ์†Œ๊ฐ๋‚จ๊ธฐ๊ธฐ

May 18, 2025