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

๐Ÿ”Ž Algorithm/๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด16

[๋ฐฑ์ค€] 1987. ์•ŒํŒŒ๋ฒณ ํ’€์ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ์ง„ํ–‰ํ•˜์—ฟ๋‹ค. ์ด ๋•Œ ์ด์ „ ๋ฐฉ๋ฌธ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐ์—๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๊ณ  ์ด์— ๋Œ€ํ•œ ์ด์œ ๊ฐ€ ArrayList์˜ remove ๊ณผ์ •์—์„œ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ „ ๋ฐฉ๋ฌธ ์•ŒํŒŒ๋ฒณ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์„ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋„ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„ํŠธ๋งˆ์Šคํ‚น์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ์— distance๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ distance๋ฅผ ๋น„๊ตํ•˜๋„๋ก ๊ฐœ์„ ํ•˜์˜€๋‹ค. ๋น„ํŠธ๋งˆ์Šคํ‚น์œผ๋กœ๋Š” ํ˜„์žฌ ์•ŒํŒŒ๋ฒณ - 'A'๋ฅผ ํ•ด์คŒ์œผ๋กœ์จ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค.. 2021. 2. 19.
[๋ฐฑ์ค€] 3109. ๋นต์ง‘ ํ’€์ด DFS๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ๋•Œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์‹œ์ž‘ ์ ์€ ๊ฐ€์žฅ ์œ„์—์„œ๋ถ€ํ„ฐ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ๋˜๋Š” ๊ทธ๋ฆฌ๋””ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ฒซ๋ฒˆ์จฐ ์—ด์˜ 1๋ฒˆ์จฐ ํ–‰๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ , ๋งŒ์•ฝ C๋ฒˆ์งธ ํ–‰์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ์ž‘ ์œ„์น˜์—์„œ์˜ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค. ๋‹ค์Œ ์œ„์น˜๋„ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ์‹คํŒจํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฐฉ๋ฌธํ•œ ์œ„์น˜์— ๋Œ€ํ•œ ์ฒดํฌ๋ฅผ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜์—์„œ ํŒŒ์ดํ”„๋ฅผ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋’ค ์„ ํƒ์ง€์—์„œ ํ•ด๋‹น ๋ฐฉํ–ฅ์€ ๋™์ผํ•˜๊ฒŒ ์‹ค.. 2021. 2. 19.
[๋ฐฑ์ค€] 15686. ์น˜ํ‚จ ๋ฐฐ๋‹ฌ ํ’€์ด ์–ผํ• ๋ณด๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„๋ณด์ด์ง€๋งŒ ๊ฒฐ๊ตญ ๋”ฐ์ ธ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์น˜ํ‚จ์ง‘์˜ ๊ฐœ์ˆ˜ ์ค‘์— M๊ฐœ์˜ ์กฐํ•ฉ์„ ๋ฝ‘๋Š” ๊ฒฝ์šฐ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ง‘๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ณ  ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค. Next Permutation ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ์กฐํ•ฉ์„ ์ƒ์„ฑํ–ˆ๊ณ  ์ด์ „ ์ตœ์†Œ๊ฐ’์„ ๋„˜์–ด์„œ๋Š” ๊ฒฝ์šฐ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์„ ์ค‘์ง€ํ•˜๊ณ  ๋ฆฌํ„ด๋˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; public class Solution15686 { static class Pair { int x = 0; int y =.. 2021. 2. 19.
[๋ฐฑ์ค€] 9251. LCS ๋ฌธ์ œ ํ’€์ด ํ•˜๋ฃจ์ข…์ผ ์ด ๋ฌธ์ œ๋งŒ ๋ถ™๋“ค๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜์Œ ์‹œ๋„ํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์ผ์ฐจ์› ๋ฐฐ์—ด์„ ํ†ตํ•ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ๋“ฑ์žฅํ•  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ์ž˜๋ชป๋œ ์ตœ๋Œ€๊ฐ’์„ ์–ป๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int[][] cache; public static void main(String[] args) thro.. 2021. 2. 10.
[๋ฐฑ์ค€] 11053. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ๋ฌธ์ œ ํ’€์ด ์ฒ˜์Œ์œผ๋กœ ์ ‘๊ทผํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ index๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ™์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ๊ฐฑ์‹ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ผ๊ด€๋œ ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๊ณ  ์ด๋ฅผ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด index๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๊ฐ’์„ ํ†ตํ•ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค. ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ•ด๋‹น ๊ฐ’ A๋ฅผ ์ฐพ๊ณ  1 ~ A-1๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธธ์ด + 1๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ €์žฅํ–ˆ๋‹ค. import java.util.Scanner; public class Solution11053 { static Scanner sc = new Scanner(System.in); static int[] cache = new int[1001]; public static void main(String[] args) { int N = sc.nextIn.. 2021. 2. 10.
[๋ฐฑ์ค€] 9663. N-Queens ๋ฌธ์ œ ํ’€์ด ์ฒ˜์Œ์—๋Š” ์™„์ „ํƒ์ƒ‰์œผ๋กœ ์ ‘๊ทผํ–ˆ์—ˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์‹คํŒจํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ–ˆ๊ณ  ๋ชจ๋“  ํ–‰/์—ด์ด ์•„๋‹Œ ์–ด์ฐจํ”ผ ํ•œ ํ–‰์—๋Š” ํ•˜๋‚˜์˜ Queen๋งŒ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ด์šฉํ•ด ์žฌ๊ท€ํ•จ์ˆ˜์˜ ๊นŠ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. import java.util.Scanner; public class NQueens { static Scanner sc = new Scanner(System.in); static int result = 0; static int N = 0; static boolean[][] check; static int[] dx = {0, 0, -1, 1, 1 ,1 , -1, -1}; static int[] dy = {-1, 1, 0 ,0, -1, 1 , 1, -1}; public sta.. 2021. 2. 5.