- [ Algorithm/백준 ][BOJ] 2659 : 십자카드 문제 - java2024-06-04 10:26:52문제https://www.acmicpc.net/problem/2659문제풀이1 이상 9 이하의 숫자 4개가 시계 방향으로 입력되므로 범위는 1111~9999가 된다.'시계수'란 숫자들의 시작점을 시계방향으로 바꿔가며 나온 수 중에 가장 작은 수를 뜻한다.시계방향이라는 규칙이 큐를 활용해도 된다고 판단하였다.ex) 1 2 2 1 -> 2 2 1 1 -> 2 1 1 2 -> 1 1 1 2와 같이 (큐의 길이 - 1) 반복하며 최소 숫자(시계수)를 구하는 메서드(findClockNum)를 생성했다.예제와 같이 2 1 1 2 가 입력된다면 시계수는 1122가 되며1111 ~ 1122까지의 숫자 중 0을 포함한 숫자와 1121(이 숫자의 시계수는 1112이다)과 같이 시계수가 아닌 수 를 제외하여 카운트를 센다...
- [ Algorithm/알고리즘 ]브루트포스 탐색 알고리즘2024-06-04 10:24:53브루트포스 알고리즘이란?브루트포스 알고리즘은 가능한 모든 경우를 탐색하여 문제를 해결하는 방법입니다. "완전 탐색"이라고도 불리며, 무차별 대입 방식으로 모든 후보를 검사합니다. 이는 가장 기본적인 알고리즘 기법 중 하나입니다.브루트포스 알고리즘의 특징단순성: 구현이 간단하고 이해하기 쉬움완전성: 해가 존재한다면 반드시 찾아냄비효율성: 경우의 수가 많을 경우 시간이 많이 소요됨브루트포스 알고리즘의 장점쉬운 구현: 복잡한 논리나 데이터 구조가 필요 없으며, 직접적인 접근 방식으로 쉽게 구현할 수 있습니다.명확한 해답 보장: 모든 경우의 수를 확인하기 때문에 해답이 존재하면 반드시 찾아냅니다.브루트포스 알고리즘의 단점비효율성: 입력 크기가 커질수록 탐색해야 할 경우의 수가 급격히 증가하여, 시간 복잡도가 매..
- [ Algorithm/알고리즘 ]Z-order 탐색 알고리즘2024-05-21 17:50:05Z-order 탐색 알고리즘이란?Z-order 탐색 알고리즘은 Z-order curve를 사용하여 다차원 공간 데이터를 1차원으로 매핑하는 기법입니다. 이를 통해 공간 데이터를 효율적으로 검색하고 정렬할 수 있습니다. Z-order curve는 공간을 재귀적으로 분할하고, 각 분할된 공간에 번호를 매깁니다.Z-order Curve의 개념Z-order curve는 공간을 Z 형태로 분할하는 기법입니다. 예를 들어 2차원 좌표 (x, y)를 이진수로 변환하고, 각 차원의 비트를 번갈아가며 결합하여 1차원 값으로 매핑합니다. 이 방식은 공간의 근접성을 유지하면서 데이터를 정렬할 수 있게 해 줍니다.Z-order 탐색의 장점공간 효율성: Z-order curve는 공간의 근접성을 유지하여 데이터의 클러스터링을 ..
- [ Algorithm/백준 ][BOJ] 1074 : Z - java2024-05-21 17:01:13문제https://www.acmicpc.net/problem/1074문제풀이Z-order curve를 사용하여 2차원 공간에서 특정 위치를 찾는 문제이다. Z-order curve는 2차원 좌표를 재귀적으로 분할하여 각 분할 영역에 번호를 매기는 방식으로, 각 좌표의 비트를 번갈아가며 결합하여 1차원으로 정렬한다. 문제는 N x N (2^N x 2^N) 크기의 격자에서 Z-order를 따라 (r, c) 위치를 방문하는 순서를 찾는 것이다.2^N x 2^N인 2차원 배열을 사분면으로 축소해 가며 (r, c)가 어느 작은 격자에 속하는지 재귀적으로 탐색을 한다.x 좌표 : r >= x && r = y && c 위와 같은 조건으로 x = 0, y = 0의 값으로 시작해 재귀적으로 탐색을 하면 가작 작은 범위의..
- [ Algorithm/알고리즘 ]유클리드 호제법(Euclidean Algorithm)2024-05-16 13:51:06유클리드 알고리즘과 호제법 ☞ 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. ☞ 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.최대공약수(GCD: Greatest Common Divisor) & 최소공배수(LCM: Least Common Multiple)란?☞ 최대공약수(GCD: Greatest Common Divisor): 두 수의 공통된 '약수 중에서 가장 큰 수'를 의미한다.☞ 최소공배수(LCM: Least Common Multiple): 두 수의 공통된 '배수 중에서 가장 작은 수'를 의미한다.두 수의 최대공약수, 최소공배수 구하기최대공약수(GCD) 구현 방법1. 반복문으로 구현b가 0..
- [ Algorithm/백준 ][BOJ] 15998 : 카카오머니 - java2024-05-16 09:42:28문제https://www.acmicpc.net/problem/15998문제풀이입출금 로그의 유효성을 체크하는 문제이기 때문에 입력받은 N개의 a(입출금액)와 b(잔액)를 배열에 넣은 후 검증한다.입금 시 전 잔액 대비 현 잔액이 유효한지 체크한다.출금 시 잔액이 마이너스가 되는 경우 최소 금액 M을 충전해야 한다. M은 모든 충전의 공통의 약수를 가지며 잔액이 최소의 값이 되게 하는 금액이므로 최대 공약수가 되어야 한다. 최대공약수를 구하는 gcd(유클리드 호제법)를 사용한다.문제의 요구대로 "-1"을 출력해야할 예외케이스가 있다.▶ 입금시, 현 잔액이 전 잔액과 입금액의 합과 맞지 않는 경우▶ 최소 충전 단위보다 더 많이 출금한 경우▶ 이전 잔액보다 적게 출금했는데 잔액이 맞지 않는 경우소스코드imp..