๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜27

BOJ 17386 ์„ ๋ถ„ ๊ต์ฐจ 1, BOJ 17387 ์„ ๋ถ„ ๊ต์ฐจ 2 ํ•ด๋‹น ๋ฌธ์ œ๋Š” CCW๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.CCW์— ๋Œ€ํ•œ ์ž์„ธํ•œ ํฌ์ŠคํŠธ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. CCW๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. ์„ ๋ถ„์€ ๊ต์ฐจํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ต์ฐจํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋กœ ๊ฐ€๋ณ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ๊ฐ์˜ ๋ฐฉํ–ฅ์„ ๋”ฐ์ ธ๋ณด์ž. ๊ต์ฐจํ•˜๋Š” ๊ฒฝ์šฐ CCW(A,B,C)๋Š” ์Œ์ˆ˜ CCW(A,B,D)๋Š” ์–‘์ˆ˜๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.๋˜ CCW(C,D,A)๋Š” ์–‘์ˆ˜, CCW(C,D,B)๋Š” ์Œ์ˆ˜๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ฆ‰, ํ•œ ์„ ๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ์„ ๋ถ„์˜ ๋ ์ ์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€ํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๊ต์ฐจํ•œ๋‹ค๊ณ  ํŒ๋‹จ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ„๋‹จํžˆ ์„ ๋ถ„ AB๋งŒ ์˜ˆ์‹œ๋กœ ๋ณด์ž.๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ต์ฐจํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ CCW(A,B,C)์™€ CCW(A,B,D)๋Š” ๋ฌด์กฐ๊ฑด ๊ฐ™์€ ๋ฐฉํ–ฅ์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ œ C.. 2025. 6. 30.
CCW (Counter Clock Wise) ์„ธ ์ ์˜ ๋ฐฉํ–ฅ์„ฑ์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐํ•˜ํ•™์  ๋ฌธ์ œ CCW ๊ฐ’์— ์˜ํ•ด ์„ธ ์ ์ด ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ ํ–ฅํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.CCW(A, B, C) = (B.x - A.x) × (C.y - A.y) - (B.y - A.y) × (C.x - A.x)๊ฒฐ๊ณผ ๊ฐ’์— ๋”ฐ๋ผ ์–‘์ˆ˜: ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ, ์Œ์ˆ˜: ์‹œ๊ณ„ ๋ฐฉํ–ฅ, 0: ์ผ์ง์„ ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. CCW๊ฐ€ ์–ด๋–ป๊ฒŒ ๋„์ถœ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.์ขŒ์ธก ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง„ ์„ธ ์ ์ด ์žˆ์„ ๋•Œ, A๋ฅผ ์›์ ์œผ๋กœ C์™€ B์˜ ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋œ๋‹ค. ๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.A' = (0, 0) ← A์—์„œ A๋ฅผ ๋บ€ ๊ฒƒB' = (bx - ax, by - ay) ← B์—์„œ A๋ฅผ ๋บ€ ๊ฒƒ (6, 2) ์ด๋ผ๊ณ  ๊ฐ€์ •C' = (cx - ax, cy - ay) ← C์—์„œ A๋ฅผ ๋บ€ ๊ฒƒ (7, 3) ๋ผ.. 2025. 6. 30.
BOJ 1106 ํ˜ธํ…” https://www.acmicpc.net/problem/1106 ์œ ๋ช…ํ•œ ๋ฐฐ๋‚ญ ๋ฌธ์ œ์ด๋‹ค.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { static class Info { int cost; int additionalCustomers; public Info(int cost, int additionalCustomers) { this.cost = cost; this.additionalCustomers = additionalCustomers; } } .. 2025. 6. 28.
Unbounded Knapsack (๋ฌดํ•œ ๋ฐฐ๋‚ญ) ์ค‘์š” ํ‚ค์›Œ๋“œ:"๊ฐ ๋ฌผ๊ฑด์„ ๋ฌดํ•œ๊ฐœ ์„ ํƒ ๊ฐ€๋Šฅ""๊ฐ™์€ ๋ฌผ๊ฑด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ""๋™์ „ ๊ตํ™˜", "์ตœ์†Œ ๊ฐœ์ˆ˜"์‹œ๊ฐ„ ๋ณต์žก๋„: O(nW)ํ•ต์‹ฌ ์•„์ด๋””์–ด:dp[w] = ๋ฌด๊ฒŒ w์—์„œ ์ตœ๋Œ€ ๊ฐ€์น˜ (๊ฐ™์€ ๋ฌผ๊ฑด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ) public class UnboundedKnapsack { // ์ตœ๋Œ€ ๊ฐ€์น˜ ๊ตฌํ•˜๊ธฐ public static int maxValue(int W, int[] weights, int[] values) { int[] dp = new int[W + 1]; for (int i = 0; i 2025. 6. 28.
[BOJ 9252] LCS2 ๋ฌธ์ œ ์ •๋ฆฌLCS(Longest Common Subsequence, ์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด) ๋ฌธ์ œ๋‘ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค.๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ฐพ๋Š”๋‹ค.๊ทธ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์ฐพ๋Š”๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ACAYKP์™€ CAPCAK์˜ LCS๋Š” ACAK๊ฐ€ ๋œ๋‹ค.LCS์˜ ๊ธธ์ด์™€ LCS๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.์ œํ•œ ์‚ฌํ•ญ0.1s, java11: 0.4s๊ฐ ์ˆ˜์—ด = ์ตœ๋Œ€ 1000๊ธ€์žLCS๊ฐ€ 0์ธ ๊ฒฝ์šฐ, ๊ธธ์ด๋งŒ ์ถœ๋ ฅํ•ต์‹ฌ ํฌ์ธํŠธLCS๋ฅผ naiveํ•˜๊ฒŒ ์ฐพ์•„๋ณด์ž.A ์ˆ˜์—ด๊ณผ B ์ˆ˜์—ด์ด ์žˆ์„ ๋•Œ, B ์ˆ˜์—ด๋กœ A ์ˆ˜์—ด์˜ LCS๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด O(N^3)์ด ๋ฐœ์ƒํ•œ๋‹ค.B ์ˆ˜์—ด์˜ ๊ฐ ๊ธ€์ž๋ฅผ ์ฒซ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ธ€์ž๋กœ ์ƒ๊ฐํ•˜๊ณ  ์ฐพ๋Š”๋‹ค๋ฉด 1000 ๊ธ€์ž์— ๋Œ€ํ•ด ๊ฐ ๊ฐ 1000 - i ๊ธ€์ž ์ˆ˜๋ฅผ ์—ฐ์‚ฐํ•ด์•ผ ๋œ๋‹ค. (N^2)๊ฐ N^2์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ธ€์ž๊ฐ€ A ์ˆ˜์—ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•œ๋‹ค. (N.. 2025. 4. 8.
[BOJ 17406] ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ 4 ๋ฌธ์ œ ์ •๋ฆฌ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์€ ๊ฐ ํ–‰์˜ ๋ชจ๋“  ์›์†Œ์˜ ํ•ฉ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด๋‹ค.๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๋ฉด k๋ฒˆ์˜ ํšŒ์ „์„ ํ•œ๋‹ค.๊ฐ ํšŒ์ „์€ r, c, s ๊ฐ’์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค.(r-s, c-s) ๋ถ€ํ„ฐ (r+s, c+s) ๊นŒ์ง€ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค.ํšŒ์ „ ์—ฐ์‚ฐ์ด ๋‘ ๊ฐœ ์ด์ƒ์ด๋ฉด, ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ์ตœ์ข… ๋ฐฐ์—ด์ด ๋‹ฌ๋ผ์ง„๋‹ค.์ œํ•œ ์‚ฌํ•ญ3 ≤ N, M ≤ 501 ≤ K ≤ 61 ≤ A[i][j] ≤ 1001 ≤ s1 ≤ r-s 1 ≤ c-s ํ•ต์‹ฌ ํฌ์ธํŠธ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ด ์กด์žฌํ•˜๋ฏ€๋กœ ๋ฐฑํŠธ๋ž˜ํ‚น๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ ๊ณผ์ •์ด ์ ์œผ๋ฏ€๋กœ ์™„์ „ ํƒ์ƒ‰ ๊ฐ€๋Šฅ๋ฐฐ์—ด ํšŒ์ „์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋กœ ์ตœ์ข… ๋ฐฐ์—ด์„ ํš๋“ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์ง€์น˜๊ธฐ ํ•„์š” ์—†์Œ.๋ฐฐ์—ด ํšŒ์ „์— ๋Œ€ํ•œ ๊ตฌํ˜„๋ ฅ ํ•„์š”ํ•ต์‹ฌ ๋กœ์ง๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ํšŒ์ „ ์ƒํƒœ ์ €.. 2025. 4. 3.
[BOJ 1826] ์—ฐ๋ฃŒ ์ฑ„์šฐ๊ธฐ ๋ฌธ์ œ ์ •๋ฆฌํŠธ๋Ÿญ์œผ๋กœ ๋งˆ์„๊นŒ์ง€ ์ด๋™ ์ค‘ 1KM๋ฅผ ์ด๋™ ํ•  ๋•Œ๋งˆ๋‹ค 1L์˜ ์—ฐ๋ฃŒ๊ฐ€ ๋น ์ ธ ๋‚˜๊ฐ€๋Š” ์ƒํ™ฉ์ด๋™ํ•˜๋Š” ๊ณณ๊ณณ์— N๊ฐœ์˜ ์ฃผ์œ ์†Œ๊ฐ€ ์กด์žฌํŠธ๋Ÿญ์€ ์ถฉ์ „ ํ•  ๋•Œ ๋งˆ๋‹ค ์—ฐ๋ฃŒ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ถฉ์ „ํ•  ์ˆ˜ ์žˆ์Œ.๊ฐ ๊ฐ์˜ ์ฃผ์œ ์†Œ ์œ„์น˜์™€ ์—ฐ๋ฃŒ์˜ ์–‘์ด ์ฃผ์–ด ์งˆ ๋•Œ, ์ตœ์†Œํ•œ์œผ๋กœ ์ถฉ์ „ํ•˜๋Š” ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ๋งˆ์„์— ๋„์ฐฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1์ œํ•œ ์‚ฌํ•ญ ์ œํ•œ์‚ฌํ•ญ 1: ์ฃผ์œ ์†Œ ๊ฐœ์ˆ˜ 1 ์ œํ•œ์‚ฌํ•ญ 2: ์ฃผ์œ ์†Œ ์œ„์น˜ 1 ์ œํ•œ์‚ฌํ•ญ 3: ์ฃผ์œ ์†Œ ์—ฐ๋ฃŒ 1 ์ œํ•œ์‚ฌํ•ญ 4: ํ˜„์žฌ ์œ„์น˜์—์„œ ๋งˆ์„๊นŒ์ง€ ๊ฑฐ๋ฆฌ 1 ์ œํ•œ์‚ฌํ•ญ 5: ํ˜„์žฌ ํŠธ๋Ÿญ์˜ ์—ฐ๋ฃŒ๋Ÿ‰ 1 ํ•ต์‹ฌ ํ‚คํฌ์ธํŠธ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ์ถฉ์ „ -> ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ด์ต, ๊ทธ๋ฆฌ๋””์˜ ํ•ต์‹ฌํ•ต์‹ฌ ํฌ์ธํŠธ๊ฑฐ๋ฆฌ์™€ ์—ฐ๋ฃŒ ์ค‘ ์–ด๋А ๊ฒƒ์„ ํฌ์ปค์Šค๋กœ ๋‘์–ด์•ผํ•˜๋Š”๊ฐ€?์˜์‹ฌํ•ด์•ผ ํ•  ํฌ์ธํŠธ 1: ๊ฐ€์žฅ ๋งŽ์€ ์—ฐ๋ฃŒ๋ฅผ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์€๊ฐ€?์˜์‹ฌํ•ด์•ผ ํ•  ํฌ์ธํŠธ 2: ๊ฐ€์žฅ ๋ฉ€๋ฆฌ.. 2025. 3. 31.
[BOJ 20207] ๋‹ฌ๋ ฅ ๋ฌธ์ œ ์ •๋ฆฌ๋‚ ์งœ๊ฐ€ 1์ผ ~ 365์ผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š” ๋‹ฌ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.์˜ฌํ•ด ์ผ์ •์„ ๋ชจ๋‘ ๊ณ„ํšํ•ด์„œ ๋‹ฌ๋ ฅ์— ํ‘œ์‹œํ•จ.๋‚ ์”จ๋กœ ์ธํ•ด ๋‹ฌ๋ ฅ์— ํ‘œ์‹œํ•œ ์ผ์ • ์ค‘ ์ผ๋ถ€๊ฐ€ ์ง€์›Œ์ง€๋ ค๊ณ  ํ•จ.๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ •์ด ์žˆ๋Š” ๊ณณ์—๋งŒ ์ฝ”ํŒ…์ง€๋ฅผ ๋‹ฌ๋ ฅ์— ๋ถ™์ด๋ ค๊ณ  ํ•จ.๋„ˆ๋ฌด ๊ท€์ฐฎ์€ ํƒ“์— ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ๋”ฐ๋ผ ์ฝ”ํŒ…์ง€๋ฅผ ๋ถ™์ด๋ ค๊ณ  ํ•œ๋‹ค.์—ฐ์†๋œ ์ผ์ •์„ ๋ชจ๋‘ ๊ฐ์Œ€ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง์‚ฌ๊ฐํ˜•์˜ ์ฝ”ํŒ…์ง€๋ฅผ ๋งŒ๋“ค์–ด ๋ถ™์ธ๋‹ค.์—ฐ์†๋œ ๋‘ ์ผ์ž์— ๊ฐ ๊ฐ ์ผ์ •์ด 1๊ฐœ ์ด์ƒ์žˆ๋‹ค๋ฉด, ์—ฐ์†๋œ ์ผ์ •์ด๋‹ค.์—ฐ์†๋œ ๋ชจ๋“  ์ผ์ •์€ ํ•˜๋‚˜์˜ ์ง์‚ฌ๊ฐํ˜•์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.๋‹ฌ๋ ฅ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.์ผ์ •์€ ์‹œ์ž‘ ๋‚ ์งœ์™€ ์ข…๋ฃŒ ๋‚ ์งœ๋ฅผ ํฌํ•จํ•œ๋‹ค.์‹œ์ž‘์ผ์ด ๊ฐ€์žฅ ์•ž์„  ์ผ์ •๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ฑ„์›Œ์ง„๋‹ค.์‹œ์ž‘์ผ์ด ๊ฐ™์€ ๊ฒฝ์šฐ ์ผ์ •์˜ ๊ธฐ๊ฐ„์ด ๊ธด ๊ฒƒ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง„๋‹ค.์ผ์ •์€ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ ์ƒ๋‹จ์— ๋ฐฐ์น˜๋œ๋‹ค.์ผ์ •.. 2025. 3. 31.
[MST] ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ - ํฌ๋ฃจ์Šค์นผ(Kruskal), ํ”„๋ฆผ(Prim) MST๋ž€? ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree)๋กœ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„(Weight Graph)์—์„œ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ(Weight)์œผ๋กœ ๋ชจ๋“  ์ •์ (Vertex)์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„(Sub Graph)์ด๋‹ค. MST๋Š” ๊ฐ ์ •์ ์—์„œ ์ •์  ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ๊ฐ„์„ (Edge)๋งŒ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด N-1 ๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฏ€๋กœ ๋งˆ์น˜ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋ฅผ ํ•˜๊ณ  ์žˆ์–ด์„œ ํŠธ๋ฆฌ๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™๋Š”๋‹ค.ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ๋ชจ๋“  ๊ฐ„์„ ์„ ๋น„์šฉ์ด ์ ์€ ์ˆœ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. - Sort2. ๊ฐ„์„ ์— ๋ถ™์€ ์ •์  u์™€ v๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ€๋ชจ๋ฅผ ์ฐพ๋Š”๋‹ค. - Find3. ์ •์  u์˜ ๋ถ€๋ชจ์™€ ์ •์  v์˜ ๋ถ€๋ชจ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ์ง€๋งŒ, 1๋ฒˆ ๊ณผ์ •์œผ๋กœ ์ธํ•ด ํ•ด๋‹น ๊ฐ„์„ ์ด ๋‘ ์ •์ ์˜ ์ตœ์†Œ ๋น„์šฉ์˜ ๊ฐ„์„ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•˜๋‚˜์˜.. 2024. 7. 11.