- [ 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..