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

์ „์ฒด ๊ธ€

(24)
[Java] BitSet BitSet BitSet์€ ๋น„ํŠธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฑํ„ฐ์ด๊ณ , ๊ฐ ๋น„ํŠธ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์—์„œ boolean ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ์„œ ๋” ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์€ false. ๋ฉ”์†Œ๋“œ๋“ค์€ ์—ฌ๊ธฐ์„œ: https://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html BitSet vs. boolean ๋ฐฐ์—ด boolean ๋ฐฐ์—ด์˜ ๊ฐ boolean ๊ฐ’์€ 1๋น„ํŠธ๊ฐ€ ์•„๋‹Œ 1๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ์ตœ์†Œ ๋‹จ์œ„๊ฐ€ ๋ฐ”์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ. BitSet ํด๋ž˜์Šค๋Š” ๋น„ํŠธ ๋‹จ์œ„์˜ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์—ฌ, ๋น„ํŠธ ๋ ˆ๋ฒจ์—์„œ ๋น ๋ฅธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ..
[Java] ๋ฐฑ์ค€ 2411 - ์•„์ดํ…œ ๋จน๊ธฐ https://www.acmicpc.net/problem/2411 ํ’€์ด ์•„์ดํ…œ์„ ์ฒดํฌํฌ์ธํŠธ ์‚ผ์•„ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ์ž‘์€ ํ–‰๋ ฌ ๊ฒฝ๋กœ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ธฐ! ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ˆ์ œ ์ž…๋ ฅ 1์˜ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์—ญ์„ ๋‚˜๋ˆ ์„œ ๊ฐ ๊ตฌ์—ญ๋งˆ๋‹ค ํ–‰๋ ฌ ๊ฒฝ๋กœ ๋ฌธ์ œ ์ ์šฉ ๊ตฌ์—ญ์„ ๋‚˜๋ˆˆ๋‹ค๊ณ  ํ‘œํ˜„ํ–ˆ๋Š”๋ฐ ์‚ฌ์‹ค ์•„์ดํ…œ์„ ์™ผ์ชฝ ์•„๋ž˜ (1, 1) ์™€ ๊ฐ€๊นŒ์šด ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ๋จน์œผ๋กœ ๊ฐ€๋ฉด ๋จ ์ถ”๊ฐ€๋กœ, ์‹œ์ž‘์  (1, 1)๊ณผ ๋„์ฐฉ์  (N, M)์—๋„ ์•„์ดํ…œ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๊ตฌํ˜„ ๋•Œ ํŽธํ•จ ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static class Point { public int row, col; public Point(int r, int c) { row..
[Java] ๋ฐฑ์ค€ 31716 - ํ˜„๋Œ€๋ชจ๋น„์Šค ์ž์œจ ์ฃผํ–‰ ํ…Œ์ŠคํŒ… 1 https://www.acmicpc.net/problem/31716 ํ’€์ด ํ•œ ํŠธ๋ž™์—์„œ 1์—ด → N์—ด๋กœ ์ด๋™ํ•˜๋Š” ์ตœ์†Œ๊ฑฐ๋ฆฌ๋Š” BFS ๋Œ๋ฆฌ๋ฉด ๊ธˆ๋ฐฉ ๋‚˜์˜ค๋Š”๋ฐ ํ•œ ํŠธ๋ž™์—์„œ ๋‹ค์Œ ํŠธ๋ž™์œผ๋กœ ๋„˜์–ด๊ฐˆ๋•Œ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ๊ผผ๊ผผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค. ํŠนํžˆ, ํ•ด๋‹น ํŠธ๋ž™ ๋„์ฐฉ์ ์˜ ํ–‰๊ณผ ๋‹ค์Œ ํŠธ๋ž™ ์‹œ์ž‘์ ์˜ ํ–‰์„ ๋งž์ถฐ์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new S..
[Java] ๋ฐฑ์ค€ 1707 - ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ https://www.acmicpc.net/problem/1707 ํ’€์ด ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค 1๊ณผ -1์„ ๋ฒˆ๊ฐˆ์•„ ๋งค๊ธฐ๋ฉด์„œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ (BFS/DFS): 1์ด ๋“ค์–ด๊ฐ€์•ผํ•  ๋…ธ๋“œ์— ์ด๋ฏธ -1์ด ๋“ค์–ด๊ฐ€์žˆ์œผ๋ฉด NO -1์ด ๋“ค์–ด๊ฐ€์•ผํ•  ๋…ธ๋“œ์— ์ด๋ฏธ 1์ด ๋“ค์–ด๊ฐ€์žˆ์œผ๋ฉด NO ๋ณ„ ๋ฌธ์ œ์—†์ด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์ด ๋๋‚˜๋ฉด YES ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int K = Integer.parseInt(br.readLin..
[Java] ๋ฐฑ์ค€ 16724 - ํ”ผ๋ฆฌ ๋ถ€๋Š” ์‚ฌ๋‚˜์ด https://www.acmicpc.net/problem/16724 ํ’€์ด ๋‹จ์ˆœํžˆ ๊ตฌ์—ญ์˜ ๊ฐœ์ˆ˜๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ๋ผ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—†์ด๋„ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ํŠน์ • ์นธ์—์„œ ๋ฐฉํ–ฅ ๋”ฐ๋ผ ์ด๋™ํ•˜๋ฉด์„œ ๊ตฌ์—ญ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋ฉด ๋˜๋Š”๋ฐ ์ด๋™ํ•˜๋‹ค๊ฐ€ 1. ์•„์ง ํ™•์ธ๋˜์ง€ ์•Š์€ ์นธ์— ๋„์ฐฉ ⇒ ํ˜„์žฌ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊น€ 2. ํ˜„์žฌ ๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ์นธ์— ๋„์ฐฉ ⇒ ์‚ฌ์ดํด์ด๋‹ˆ๊นŒ ์ด๋™ ๊ธˆ์ง€ํ•˜๊ณ  ๋น„์–ด์žˆ๋Š” ์นธ์—์„œ ์ƒˆ๋กœ์šด ๊ตฌ์—ญ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋ฉด์„œ ์ด๋™ ์‹œ์ž‘ 3. ์ด์ „ ๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ์นธ์— ๋„์ฐฉ ⇒ ๋‘ ๊ตฌ์—ญ์ด ์—ฐ๊ฒฐ๋์œผ๋‹ˆ๊นŒ ๊ตฌ์—ญ ์นด์šดํŠธ ํ•˜๋‚˜ ์ค„์ด๊ณ  ๋น„์–ด์žˆ๋Š” ์นธ์—์„œ ์ƒˆ๋กœ์šด ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋ฉด์„œ ์ด๋™ ์‹œ์ž‘ ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void ma..
[Java] ๋ฐฑ์ค€ 7579 - ์•ฑ https://www.acmicpc.net/problem/7579 ํ’€์ด ์–ผํ• ๋ด๋„ ๋ฐฐ๋‚ญ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ๋‹ฎ์•„ ์žˆ๋‹ค dp[i][w] = ์ตœ๋Œ€ ๋ฌด๊ฒŒ๊ฐ€ w์ธ ๋ฐฐ๋‚ญ์—์„œ i๋ฒˆ์งธ ๋ฌผ๊ฑด๊นŒ์ง€ ํŒ๋‹จํ–ˆ์„ ๋•Œ์˜ ์ตœ๋Œ€ ๊ฐ€์น˜ dp[i][m] = ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ m์ธ ์ƒํƒœ์—์„œ i๋ฒˆ์งธ ์•ฑ๊นŒ์ง€ ํŒ๋‹จํ–ˆ์„ ๋•Œ์˜ ์ตœ๋Œ€ ๋น„์šฉ ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ์—๋Š” m์ด ์ตœ๋Œ€ 10,000,000๊นŒ์ง€ ์ปค์ ธ์„œ ์•ˆ๋จ ๋Œ€์‹  ๊ธฐ์ค€์ ์„ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋น„์šฉ์œผ๋กœ ์žก์œผ๋ฉด dp[i][c] = ์ตœ๋Œ€ ๋น„์šฉ์ด c์ธ ์ƒํƒœ์—์„œ i๋ฒˆ์งธ ์•ฑ๊นŒ์ง€ ํŒ๋‹จํ–ˆ์„ ๋•Œ์˜ ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์—ฌ๊ธฐ์„œ c๋Š” ์ตœ๋Œ€ 100×100 ์œ„์˜ ์‹์„ ์ด์šฉํ•ด์„œ ์šฐ๋ฆฌ ์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋น„์šฉ์˜ ์ตœ์†Œ๋ฅผ ๊ตฌํ•˜๋ฉด ๋! ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Ma..
[Java] ๋ฐฑ์ค€ 21276 - ๊ณ„๋ณด ๋ณต์›๊ฐ€ ํ˜ธ์„ https://www.acmicpc.net/problem/21276 ํ’€์ด ์กฐ์ƒ-์ž์† ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด์„œ ์œ„์ƒ ์ •๋ ฌ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฑด ์ „์ฒด ์ถœ๋ ฅ์—์„œ ์ž์‹์˜ ์ด๋ฆ„์ด ํ•œ ๋ฒˆ๋งŒ ๋“ฑ์žฅํ•œ๋‹ค๋Š” ์ ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๊ฐ€์žฅ ๋ฐ‘์—์„œ ๋ถ€ํ„ฐ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์ž์‹๋“ค์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ์ด๋ฏธ ๋‚˜์˜จ ์ด๋ฆ„์€ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด ๋จ. ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด HashMap ์‚ฌ์šฉ ์ฝ”๋“œ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static class Person { public String name; public int indegree, outdegree; public ArrayList ancestors; public ArrayList descendants..
[Java] ๋ฐฑ์ค€ 31577 - ๋žœ์„ฌ์›จ์–ด์™€ ๋น„ํŠธ์ฝ”์ธ https://www.acmicpc.net/problem/31577 ํ’€์ด 15*8 = 20*6 ์ฆ‰, ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํŒŒ์ผ์„ ๊ฐ๊ฐ 6๊ฐœ์”ฉ ์ €์žฅํ•˜๋Š” ๊ฒŒ ๊ฐ€๋Šฅ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 120์นธ ์งœ๋ฆฌ ๋ฐฐ์—ด์— 1, 2, … , 19, 20 ์„ 6๋ฒˆ ์ €์žฅํ•˜๊ณ  ํ•ด๋‹น ๋ฐฐ์—ด์„ 15๊ฐœ๋กœ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค (๊ฐ ๋ฐฐ์—ด ์ •๋ ฌ๋„ ์žŠ์ง€ ๋ง๊ณ  ํ•˜๊ธฐ!) ์ฝ”๋“œ ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { StringBuilder sb = new StringBuilder(); int[] arr = new int[8]; for (int i = 0; i < 120; i++)..