본문 바로가기

Algorithm9

비트마스킹에 대해 알아보자 이진수를 이용해 boolean배열을 표현할 수 있다. 예를들어 4는 100, 2는 0101은 true, 0은 false로 나타낼 수 있음boolean 배열의 크기가 크다면 비트마스킹을 사용하는게 효율적일 수 있음하나의 숫자를 만들어서 비트 연산자를 통해 탐색, 수정 작업을 하는 것! 비트연산자&비트단위로 AND연산|비트 단위로 OR 연산^비트 단위로 XOR연산비교하려는 두 비트가 다르면 true, 같으면 false~피연산자의 모든 비트 반전피연산자의 비트 열을 왼쪽으로 이동a >>피연산자의 비트 열을 오른쪽으로 이동a >> b는 a / (2 ^ b)와 같은 의미 2의 보수음수를 표현할 때 2의 보수법을 이용함해당 양수의 모든 비트를 반전한 수에 1을 더하는 방식-value = ~value + 1 이므로 .. 2024. 9. 6.
[JAVA] 나무박멸 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 알고리즘 분류 시뮬레이션 문제 풀이 방법 나무 성장, 번식, 제초제 선택 ~ 뿌리는 과정을 각각 함수로 만들어서 풀이했습니다. 코드를 공개하기에 살짝 부끄러운 함수명들로 만들었습니다. 나무 성장: grow() 번식: bunsik() (분식 아님,,) 제초제 과정: jechoje() 주의해야 할 점 제초제를 뿌리는 범위를 주의해야 합니다. 나무가 없는 곳이라면 모두 제초제를 뿌릴 수 있는 후보군이 됩니다. 나무가 있는 곳: 4개의 대각선 방향으로 k칸 만큼 전파 전파 도중 벽이 있거나 나무가 아예 없는 칸.. 2024. 3. 26.
[JAVA] BOJ21922 학부 연구생 민상 알고리즘 분류 구현 그래프 이론 그래프 탐색 시뮬레이션 문제 풀이 방법 물건이 있을 때, 나아가야되는 방향이 바뀌는데 경우를 나누어서 에어컨 바람이 갈 수 있는 곳을 찾았습니다. 이 때, 한 번 갔던 곳이라고 해서 2차원 배열을 사용해서 방문 처리를 하면, 다시 못 가는 경우가 발생하게 됩니다. 에어컨 바람은 교차해서 갈 수 있으므로 한 번 갔다고 해서 다시 못가게 된다면, 오답입니다. 따라서 2차원 배열이 아닌, 3차원 배열을 사용했습니다. Wind클래스는 에어컨에서 나오는 바람에 대한 정보로, 현재 행, 열 번호와 나아가는 방향의 정보를 담아줬습니다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.. 2024. 2. 8.
[JAVA] BOJ1089 스타트링크 타워 알고리즘 분류 수학 구현 확률론 문제 풀이 방법 nums 배열에서 구역을 알면 어떤 수인지 알 수 있습니다. nums[행][0] ~ nums[행][2] 일 때는 1 nums[행][4] ~ nums[행][6] 일 때는 2 nums[행][8] ~ nums[행][10] 일 때는 3 ... nums[행][32] ~ nums[행][34] 일 때는 9 ArrayList 배열은 각 idx번째에서 어떤 정수를 가질 수 있는지 저장합니다. e.g) list[0]: 0번째 위치에서 가질 수 있는 숫자들 (조건을 판단해서 가능한 것들을 ArrayList구조로 저장함) map과 nums를 비교하면서 현재 map의 범위에서 가능한 경우를 list에 저장합니다. checkNums 함수에서 구현하였습니다. 각 자릿수에서 가능한 정.. 2024. 2. 1.
[JAVA] BOJ2293 동전 1 알고리즘 분류 다이나믹 프로그래밍 문제 풀이 방법 동전들의 가치를 저장하는 num 배열을 입력받습니다. dp[i][j] 배열은 인덱스 i번째 동전까지 사용했을 때, 가치 j를 만들 수 있는 경우의 수라고 정의했습니다. 동전들을 num 배열에 저정합니다. 첫 번째 동전만 사용할 경우, j(가치) % num[i] == 0일 때, 해당 동전으로 가치를 만들 수 있는 것이므로 arr[i][j]의 값을 1로 만들어주었습니다. e.g. 가치가 14이고, 첫 번째 동전이 7일 경우 dp[0][7]과 dp[i][14]의 값만 1이고, 나머지 값은 0의 값을 가짐 동전을 두 개 이상 사용하는 경우는 dp배열은 다음과 같습니다. dp[i][j] = dp[i - 1][j] + dp[i][j - arr[i]] 이 때, j -.. 2024. 1. 15.
[JAVA] BOJ1753 최단경로 알고리즘 분류 그래프 이론 데이크스트라 최단 경로 문제 풀이 방법 Node 클래스를 만든 후, 다익스트라 알고리즘을 사용했다. 우선순위 큐에 (끝 점, 가중치)의 값을 가진 노드를 추가하며, 최단 경로로 갔을 때의 값을 배열 d에 저장했다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.PriorityQueue; import java.util.StringTokenizer; /* 최단경로 */ public class BOJ1753 { static class Node implements Comparable { .. 2023. 12. 18.