본문 바로가기

전체 글

[Spring Boot]java: cannot access org.springframework.context.annotation.Bean bad class file: 최근에 Spring Boot 프로젝트를 만들면 만날 수도 있는 에러입니다. 무의식적으로 Spring Boot 프로젝트를 기본 값으로 만들게 되면, Spring Boot 3 버전의 프로젝트가 만들어지게 됩니다. 이 버전은 최소 JDK 17을 지원합니다, 즉, JDK 8, 11, 14와 같이 17 미만의 버전은 지원하지 않는다는 의미입니다. maven 혹은 gradle을 사용하는 경우 Spring Boot의 버전을 2.x로 낮추면 해결됩니다. 저는 maven을 사용하는 하기 때문에, pom.xml에서 버전을 2.3.0.RELEASE로 낮췄습니다. 더보기
[AWS]Error: checking AWS STS access – cannot get role ARN for current session eksctl create 명령어를 사용하다가 Error: checking AWS STS access – cannot get role ARN for current session: operation error STS: GetCallerIdentity, failed to sign request: failed to retrieve credentials: failed to refresh cached credentials, no EC2 IMDS role found, operation error ec2imds: GetMetadata, request send failed 에러를 만났습니다. 이 에러는AWS CLI를 사용하지만, IAM 설정이 되지 않았을 때 발생하는 에러입니다. 우선 AWS CLI가 정상적으로 깔려 있.. 더보기
프로그래머스 - 점 찍기(Java) 구현 문제입니다. 문제를 요약하면, 거리가 d 이하인 x, y좌표 정수의 개수를 구하는 문제입니다. 단, 각 좌표는 k 배수입니다. 익숙한 그림 아닌가요? 네, 피타고라스 정리를 이용하면 아주 쉽게 문제를 해결할 수 있습니다. 각 좌표는 k의 배수입니다. 즉, x좌표를 0~d까지 k배수만큼 증가를 시키면, 각 x마다 가능한 y를 구해야 하는 방정식이 주어지게 됩니다. 이 방정식이 바로 피타고라스 정리입니다. 거리 d는 고정된 값입니다. 피타고라스 정리를 통해 알게되는 y는 해당 x좌표에서의 최대 y좌표의 거리입니다. y역시 k의 배수이기 때문에, 최대 y좌표의 거리에서 k만큼 나누게 된다면 거리 d이하의 좌표 개수를 알 수 있게 됩니다. [구현 코드] class Solution { public stati.. 더보기
프로그래머스 - 억억단을 외우자(Java) 구현 문제입니다. 이 문제는 약수의 개수를 통해 해결하는 문제입니다. 왜 약수의 개수의 문제를 구해야 하는지 알아보겠습니다. 이 문제의 접근은 세 단계로 이뤄집니다. 왜 약수인가? 약수의 개수 구하기 범위 내 최대 약수의 개수 (중요!) 1. 왜 약수인가? 영우는 s와 e가 주어질 때, "s 더보기
프로그래머스 - 귤 고르기(Java) 구현 문제입니다. 귤의 크기(tangerine)들과 상자에 담을 개수(k)가 주어집니다. 귤의 크기(key)와 그 개수(value)를 Map에 저장하여, 개수가 많은 순 부터 사용하여 k개를 채우면 끝나는 문제입니다. [구현 코드] import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class Solution { private Map map; public int solution(int k, int[] tangerine) { int answer = 0; // 크기별로 몇 개 있는지 map에 저장함 map = new HashMap(); for (int tan : tangerine) {.. 더보기
백준 - 1865 웜홀(Java) https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 벨만-포드 문제입니다. 벨만-포드 알고리즘은 음의 가중치가 있을 때, 최소 거리를 구하기 위해 사용됩니다. 만약, 양의 가중치만이 있을 때 사용되는 다익스트라와 대조됩니다. 벨만-포드는 노드 n개가 있을 때, n-1 번 거리를 갱신한 후에 한 번 더 갱신합니다. 만약 한 번더 갱신이 되면 음의 사이클이 존재하는 것입니다. 이 문제의 경우 음의 사이클이 발생하는지 확인하기 위해 벨만-포.. 더보기
백준 - 5639 이진 검색 트리(Java) https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 탐색 문제입니다. 전위 탐색 정보를 사용하여, 후위 탐색 정보를 출력해야 합니다. 전위 탐색은 다음과 같습니다. void pre(Node node){ print(node); pre(node.left); pre(node.right); } 즉, 전위 탐색은 현재 노드를 출력하고 좌측부터 탐색을 하는 방법입니다. 때문에, 입력에서 주어지는 첫 번째 입력은 루트 노드라는 것을 알 수 있습니다.. 더보기
백준 - 2230 수 고르기(Java) 투포인터 문제입니다. n개의 숫자 중 두 개의 숫자를 고를 때, 두 수의 차이가 m이상이면서 최소가 되는 경우를 구해야합니다. 문제 접근 순서는 다음과 같습니다. 입력 값을 정렬한다. 두 개의 포인터(lp, hp)를 움직여 차이를 구한다. 초기 위치는 lp=0, hp=1이다. lp, hp위치의 값 차이가 m보다 크면 차이를 줄인다. (lp를 앞으로 움직인다.) lp, hp위치의 값 차이가 m보다 작으면 차이를 늘린다. (hp를 앞으로 움직인다.) lp가 n-1에 도달할 때 까지 반복한다. (hp가 n에 도달하고, lp가 n-1까지 도달하는 경우이다.) 저장된 최소 차이를 출력한다. [구현 코드] import java.io.*; import java.util.Arrays; import java.util.S.. 더보기