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

๋ฐ˜์‘ํ˜•

Algorithm

[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ€๊ฒŸ ๋„˜๋ฒ„ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ€๊ฒŸ ๋„˜๋ฒ„ https://programmers.co.kr/learn/courses/30/lessons/43165 ๋ฌธ์ œ ์ ‘๊ทผ dfs๋ฅผ ์ด์šฉํ•ด์„œ numbers[0] ๋ถ€ํ„ฐ numbers[numbers.length-1]๊นŒ์ง€ ๋ชจ๋“  ์ˆซ์ œ์—๋Œ€ํ•ด์„œ +,-ํ•œ ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•ด์„œ target์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ–ˆ๋‹ค. Code class Solution { int answer; int[] nums; public int solution(int[] numbers, int target) { answer = 0; nums = numbers; dfs(0, 0, target); return answer; } public void dfs(int num, int cnt, int target){ if(cnt == nums... ๋”๋ณด๊ธฐ
[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ค์Œ ํฐ ์ˆซ์ž [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ค์Œ ํฐ ์ˆซ์ž https://programmers.co.kr/learn/courses/30/lessons/12911 ๋ฌธ์ œ ์ ‘๊ทผ ์ฒ˜์Œ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” Integer.toBinaryString() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ stringํ˜•ํƒœ์˜ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ณ , n+1๋ถ€ํ„ฐ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ๋Œ๋ ธ๋‹ค. ๋‹ค ํ’€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ๊นŒ Integer.countBit()๋ฅผ ์ด์šฉํ•˜๋ฉด 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์„œ ๋” ์‰ฝ๊ฒŒ ํ’€์—ˆ๋‹ค. Code Integer.toBinaryString()์ด์šฉํ•œ ํ’€์ด class Solution { public int solution(int n) { String binaryNum = Integer.toBinaryString(n); int .. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 1167 ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ [BOJ] 1167 ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ https://www.acmicpc.net/problem/1167 ๋ฌธ์ œ ์ ‘๊ทผ ์ด ๋ฌธ์ œ๋Š” ์•„๋ž˜ ๋ฌธ์ œ์™€ ๊ฑฐ์˜ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์ด๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋Š” ๋ฐฉ์‹๋งŒ ๋‹ค๋ฅด๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์—ฌ์„œ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 1967 ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class BOJ1167 { static class Node{ int to; int dist; public Node(int to, int dist) { th.. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 1967 ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ [BOJ] 1967 ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ https://www.acmicpc.net/problem/1967 ๋ฌธ์ œ ์ ‘๊ทผ dfs๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•˜์˜€๋‹ค. 1๋ฒˆ ๋…ธ๋“œ์—์„œ dfs๋ฅผ ์‹œ์ž‘ํ•ด์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ–ˆ๋‹ค๊ฐ€, ํ•ด๋‹น ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋‹ค์‹œ dfs๋ฅผ ์‹œ์ž‘ํ•ด์„œ ๊ทธ์ค‘์— ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ๋…ธ๋“œ์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜์˜€๋‹ค. Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class BOJ1967 { static class Node { int end; int value; Node.. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 11729 ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ [BOJ] 11729 ํ•˜๋…ธ์ดํƒ‘ ์ด๋™ ์ˆœ์„œ https://www.acmicpc.net/problem/11729 ๋ฌธ์ œ ์ ‘๊ทผ ์ผ๋‹จ ํ•˜๋…ธ์ด ํƒ‘์„ 1์—์„œ 2๋ฅผ ๊ฑฐ์ณ์„œ(์ด์šฉํ•ด์„œ?) 3์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค. ๋‚˜์˜ ์ง๊ด€์ ์ธ? ์ ‘๊ทผ ๋ฐฉ์‹์€ n์ด 3๊ฐœ์ผ ๋•Œ, 1.์ฒซ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ 1 -> 3์œผ๋กœ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์˜ฎ๊ธด๋‹ค. 2.๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ 1 -> 2๋กœ ๋‘๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฒƒ์„ ์˜ฎ๊ธด๋‹ค. (์ด๋Ÿฌ๋ฉด ๊ฐ€์žฅ ํฐ๊ฒƒ์ด 1์— ์žˆ๋‹ค!) 3.์ด๋•Œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•˜์ง€ ์•Š๊ณ  1 -> 3์œผ๋กœ ์˜ฎ๊ธด๋‹ค. (์ด ๋•Œ 3์— ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฒƒ์€ ์ด์ œ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋œ๋‹ค!) 4.์ด์ œ ์ด ๋ฌธ์ œ๋Š” 2๊ฐœ์˜ ์›๋ฐ˜์„ ๊ฐ€์ง„ ํ•˜๋…ธ์ดํƒ‘์„ 2 -> 3์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฌธ์ œ๋กœ ์ž‘์•„์ง„๋‹ค. => ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ 2->3์œผ๋กœ ๋‹ค์‹œ ์ž‘์€ ๊ฒƒ์„ ์˜ฎ๊ธด๋‹ค. ์ด ์ ‘๊ทผ์„ ์žฌ๊ท€์ ์œผ๋กœ ์ž˜ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡.. ๋”๋ณด๊ธฐ
[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ https://programmers.co.kr/learn/courses/30/lessons/42839 ๋ฌธ์ œ ์ ‘๊ทผ String์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ˆซ์ž๋“ค๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆซ์ž ์กฐํ•ฉ์„ ๋งŒ๋“ค๊ณ  ์ด ์ˆซ์ž์ค‘์„ธ์„œ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์†Œ์ˆ˜๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด์„œ Math.sqrt(n)์„ ์ด์šฉํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ณ , dfs๋ฅผ ์ด์šฉํ•ด์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ๋‘๊ฐœ ์ด์ƒ์žˆ์œผ๋ฉด ์ค‘๋ณต๋˜๋Š” ์ˆซ์ž๋“ค์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์–ด์„œ HashSet์„ ์ด์šฉํ•ด์„œ ์ค‘๋ณต ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜์˜€๋‹ค. Code import java.util.HashSet; class Solution { char[] nums; boolean[] visited; HashSet hs = new HashSet(); public int solu.. ๋”๋ณด๊ธฐ
[Algorithm/Java][๋ฐฑ์ค€] 9020 ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก [BOJ] 9020 ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก https://www.acmicpc.net/problem/9020 ๋ฌธ์ œ ์ ‘๊ทผ ์ง์ˆ˜ n์„ ๊ฐ€์žฅ ์ฐจ์ด๊ฐ€ ์ž‘์€ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ฒ˜์Œ์—๋Š” n๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ๊ทธ ์ˆ˜์ค‘์—์„œ ํ•ฉ์„ ์ˆ˜ํ• ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง€๊ณ  ๋‚ด๊ฐ€ ์ผ๋Š”๋ฐ๋„ ๋‚ด๊ฐ€ ๋ชป์•Œ์•„๋ณด๋Š” ์ง€๊ฒฝ์ด์˜€๋‹ค... ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ์€ ๋ง‰ํ˜”๋‹ค ๊ทธ๋ž˜์„œ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ 10000๊นŒ์ง€์˜ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ–ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์€ ๊ฐ€์žฅ ์ฐจ์ด๊ฐ€ ์ž‘์€ ๋‘ ์†Œ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ num1์€ n/2๋ถ€ํ„ฐ 1์”ฉ ๊ฐ์†Œํ•˜๊ณ  num2๋Š” n- num1์œผ๋กœ ํ•ด์„œ num1,num2 ๋ชจ๋‘ ์†Œ์ˆ˜์ธ ์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ๊ฐ€ ๋‹ต์ด์˜€๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1.์—๋ผํ† ์Šค๋„ค์Šค์˜ ์ฒด๋กœ 10000๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•œ๋‹ค. 2.1์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ n/2๋ถ€.. ๋”๋ณด๊ธฐ
[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋•…๋”ฐ๋จน๊ธฐ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋•…๋”ฐ๋จน๊ธฐ https://programmers.co.kr/learn/courses/30/lessons/12913 ๋ฌธ์ œ ์ ‘๊ทผ ์ฒ˜์Œ์— ์ ‘๊ทผํ•  ๋•Œ dfs๋กœ ํ’€์–ด์•ผ ๋ ๊นŒ? dp๋กœ ํ’€์–ด์•ผ ๋ ๊นŒ? ๊ณ ๋ฏผ์ด ๋˜์—ˆ๋Š”๋ฐ dfs๋กœ ์ฝ”๋“œ ์งœ๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ๋ฐ”๋กœ ๋ง‰ํ˜€์„œ dp๋กœ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์ผ๋‹จ ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ˜„์žฌ ๋‚ด๊ฐ€ ๋ฐŸ์€ ๋•…๊ณผ ๊ฐ™์€ ์—ด์„ ์ œ์™ธํ•˜๊ณ  ๋ฐ”๋กœ ์ „ ํ–‰์—์„œ ์ตœ๊ณ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๊ณณ์„ ๋ฐŸ์•„์•ผ ์ตœ๊ณ  ์ ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋•…์„ ๋ฐŸ์•„๊ฐˆ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ dp๋ฐฐ์—ด์— ๊ทธ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ์ตœ๊ณ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ํ–‰์ค‘์—์„œ ์ตœ๊ณ  ์ ์ˆ˜๊ฐ€ ์ตœ์ข… ๋‹ต์ด ๋œ๋‹ค. Code class Solution { int solution(int[][] land) { int answer = 0; int[][] dp = new int[land.lengt.. ๋”๋ณด๊ธฐ