오블완 19

SpringBoot - SLF4J

1. slf4j란?slf4j(Simple Logging Facade for Java)는 다양한 로깅 프레임워크 (예: Logback, Log4j, java.util.logging 등)와 통합될 수 있는 추상화 레이어를 제공하는 라이브러리입니다. 이를 통해 코드에서 로깅 API를 통일시켜 로깅 백엔드를 교체하더라도 코드의 변경 없이 일관되게 사용할 수 있습니다.2. slf4j 의존성 추가하기Spring Boot 프로젝트에서 slf4j를 활용하기 위해 기본적으로 Logback이 포함되어 있습니다. 하지만 프로젝트에서 명시적으로 추가하고자 한다면 pom.xml에 의존성을 추가할 수 있습니다. org.slf4j slf4j-api 1.7.36 ..

SpringBoot 2024.11.17

SpringBoot - 백엔드 개발할 때 알아두면 좋은 기술 스택

1. 프로젝트 관리: Maven 또는 GradleSpring Boot 프로젝트는 Maven과 Gradle 중 하나를 빌드 도구로 선택합니다.Maven: 직관적인 XML 구조와 방대한 커뮤니티 지원으로 안정적인 환경 제공.Gradle: 빌드 속도가 빠르고, 직관적인 DSL을 통해 설정 간소화 가능.선택 팁: 프로젝트 규모와 팀의 경험에 따라 도구를 결정하세요. Maven이 익숙한 팀이라면 Maven을, 최신 트렌드와 속도를 중요시한다면 Gradle을 추천합니다. 2. 데이터베이스: JPA/Hibernate + QueryDSLJPA/Hibernate: 데이터베이스 ORM(Object-Relational Mapping) 도구로, 데이터베이스 작업을 자바 객체와 매핑하여 생산성을 향상시킵니다.QueryDSL: ..

SpringBoot 2024.11.16

[백준, 자바, 2346번] 풍선 터뜨리기

풀이해당 문제를 푸는 방법은 다양하게 있을 듯하다.다만 나는 배열을 새롭게 계속 변형하는 것은 효율적이지 않다고 생각하여인덱스를 사용해서 해결하고자 함.다만 처음에 간과했던 부분은 이미 터뜨린 풍선을 지나갈 때카운팅을 해버려서 계속 오답으로 나왔음.그래서 해당 문제를 이후에 깨닫고 나서는for문을 거쳐서 하나씩 이동하면서 해당 위치가 이미 터뜨린 풍선의 위치라면while문을 거치게 하여 터뜨리지 않은 풍선을 찾으며 해결하고자 하여 해결 import java.util.Scanner;import java.io.*;public class _2346 { public static void main(String[] args) throws IOException { Scanner sc = new Sc..

알고리즘 2024.11.14

[백준, 자바, 2581번] 소수

풀이이전 소수 찾기 문제를 통해 알게 된에라토스테네스의 체를 활용하여 해결우선 값이 더 큰  N을 기준으로 boolean 배열을 만들고2부터 배수가 되는 인덱스에 값을 true로 변경하고이후 범위를 M과 N 사이에 해당 하는 값을 조건에 따라처리하여 해결 import java.util.Scanner;public class _2581 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int N = sc.nextInt(); boolean[] li = new boolean[N+1]; li[1] = true; ..

알고리즘 2024.11.13

[백준, 자바, 1620번] 나는야 포켓몬 마스터 이다솜

풀이알고리즘을 풀 때, 뭔가 항상 효율적으로 풀자라는 생각에시간이 좀 오래걸리는 경우도 있었는데이제는 그냥 단순히 최대한 빨리 푸는 것에 집중하고자 다짐우선 해당 문제에선 빠르게 풀기 위해선그냥 Map과 배열을 모두 활용하는게 좋을 것 같아그대로 적용해보니 수월하게 풀이 완료.다만 입력값이 문자열인지 숫자인지 정확하지 않은 것에 대한판별을 위해서, 별도의 함수를 작성.해당 함수는 정규식을 활용해서 숫자인지 문자인지 판별.이후 다른 코드를 보면서 입력값이 일정하게 정수, 문자열로만 주어진다면두 번째 코드로 해결한다면 더 빠르게 해결할 수 있음. // 첫 번째 코드import java.io.*;import java.util.*;public class _1620 { public static void ma..

알고리즘 2024.11.12

[백준, 자바, 19532번] 수학은 비대면강의입니다

풀이해당 문제는 직접 풀이하면 간단하지만,뭔가 알고리즘으로 해결하려고 생각하니 까다로운 점이 있어서시간이 걸렸다.처음 접근할 때는, 주어지는 입력값에 0이 있다는 것을 어디까지 생각해야 하는지에 대한 혼동으로 우선은모든 값에 0이 아닌 정수가 있다는 것으로 픽스를 하여a와 d를 기준으로 잡고 같은 값으로 만들기 위해 우선 GCD로 최대공약수를 찾아 그에 맞게 각 방정식의 값을 변경 후 x,y 값을 찾기이후 모든 경우를 생각해서 각 방정식에 0의 정수가 하나씩 모두 있는 경우와한 방정식에 있는 경우에 대한 조건 분기 후 처리하여 해당 문제를 해결. import java.io.*;import java.util.*;public class _19532 { public static void main(Stri..

알고리즘 2024.11.11

[백준, 자바, 1977번] 완전제곱수

풀이해당 문제는 간단한 문제로문제만 잘 읽고, 이해하면 되는 문제라고 판단하여 빠르게 해결M과 N 사이의 값 중 완전제곱인 수의 합과, 최솟값을 구하는 문제로M을 루트 씌운 값을 시작으로 완전제곱일 경우에 대한 조건 분기를 거쳐 해결. import java.util.Scanner;public class _1977 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int N = sc.nextInt(); long result = 0; int now = (int)Math.round(Math.sqrt(M)); ..

알고리즘 2024.11.10

[백준, 자바, 1057번] 토너먼트

풀이해당 문제를 풀면서 역시 대충 예상하고 풀지말자라고 다시 느끼게 됨.처음에 문제 아래에 서로 붙지 않는 경우엔 -1을 하라고 했지만토너먼트인데 서로 붙지 않는 경우가 있을까 해서예외처리 하지 않고 했는데 계속 실패그리고 무조건 앞의 친구가 작을 것으로 대충 생각하고 해서 실패이러한 작은 것들이 하나 둘씩 생각 안하고 풀어 제끼니 계속 틀리지 싶어서 반성...무튼 해당 문제는 위의 것들을 고려하고, N을 계속 2로 나누며 범위를 탐색했고,만약 N이 홀수의 경우엔 가장 마지막 값을 따로 추가 해주면서 아래와 같이 해결. import java.io.*;import java.util.*;public class _1057 { public static void main(String[] args) throw..

알고리즘 2024.11.09

[백준, 자바, 1541번] 잃어버린 괄호

풀이취업이 어려워, 우울해서 그냥 오늘도 알고리즘 안풀까하다가...그래도 하나라도 풀자라는 마음에 품...해당 문제는 단순히 입력값을 String으로 받아서toCharArray로 받은 변환한 다음각 char들을 확인하면서 -또는+가 아닐 경우StringBuilder에 더하고ㅡ-또는+라면 우선 StringBuilder에 있는 걸 Integer로 변환하고-가 나왔다면 idx를 1로 변경 한 다음해당 idx에 값에 계속 추가하여 해결.처음에는 -가 나올때마다 변경하여 해결하려 했지만,예제를 따로 만들어 적용하려다 보니이상함을 감지하여 아래와 같이 적용 후 해결. import java.util.Scanner;public class _1541 { public static void main(String[] a..

알고리즘 2024.11.08