전체 글 607

[백준, 자바, 1992번] 쿼드트리

풀이해당 문제는 처음에 뭔가 했는데단순히 전체를 체크한 뒤 0과 1이 섞여 있다면사분면으로 나누는 분할과 확인을 거치는 정복에 관련한 문제다만 사분면의 범위를 지정하는데 잠시 이슈가 있었던게짝수로만 범위가 주어질때는 예를 들어si=0,ei=8,sj=0,ej=8,ln=8 이라고 할 때사분면을 나눌 때 그냥 절반으로 해서ei를 ei/2 이런식으로 하니까 길이가 1인 경우를 체크할 땐원하는 배열 탐색이 안되었다.그래서 수정한 건 시작과 끝을 더한 뒤 2를 나눈 값으로 지정하여 아래와 같이 작성 후 해결. import java.io.*;import java.util.StringTokenizer;public class _1992 { static int N; static String[][] mtx; ..

알고리즘 2024.11.25

SpringBoot -비밀번호 암호화 및 사용자 인증하기

1. 프로젝트 설정Maven 의존성 추가먼저, 비밀번호 암호화를 위해 Spring Security 의존성을 추가합니다. org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web  2. 비밀번호 암호화(Bcrypt)Spring Security에서 제공하는 BCryptPasswordEncoder를 사용해 비밀번호를 암호화합니다.PasswordUtil 클래스비밀번호 암호화 및 검증 유틸리티를 작성합니다.import org.springframework.security.crypto.bcrypt.BC..

SpringBoot 2024.11.24

SpringBoot - JWT 구현 (기초)

JWT(Json Web Token)- 서버와 클라이언트 간 인증 및 정보 교환을 위해 널리 사용되는 토큰 기반 인증 방식1. 프로젝트 환경 설정JWT를 구현하려면 필요한 라이브러리를 추가해야 합니다.Maven 의존성 추가pom.xml에 아래와 같은 의존성을 추가합니다. org.springframework.boot spring-boot-starter-web io.jsonwebtoken jjwt-api 0.11.5 io.jsonwebtoken jjwt-impl 0.11.5 io.jsonwebtoken jjwt-jackso..

SpringBoot 2024.11.23

[백준, 자바, 2740번] 행렬 곱셈

풀이해당 문제는 뭔가 손으로는 가능한데계속 머리가 멈춘것 처럼 해결 방법이 떠오르지 않아서고민해보다가 그냥 단순히 하나씩 적용해보다 풀림이러한 유형의 문제는 고민보단, 떠오르는 대로 먼저 시도해보는게아이디어가 나오기 좋은 행동이라는 것을 다시 확인해당 문제에선 기존 2차원 배열에서 탐색하는 방법을 거꾸로 해서행열 -> 열행 순서로 접근하는 형식으로 해결 import java.io.*;import java.util.Arrays;import java.util.StringTokenizer;public class _2740 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedRea..

알고리즘 2024.11.22

[백준, 자바, 16139번] 인간-컴퓨터 상호작용

풀이처음 떠오른 방법이 아래 코드와 같은데왠지 효율상 이게 맞나?라는 의문이 있었지만우선 빨리 해결해보겠다는 마음으로 시도해본 결과생각보다 괜찮았는지 해결이 됨문자의 각 인덱스 별로 a-z까지를 카운팅할 2차원 배열을 만들고현재 배열에 이전 배열을 모두 복사한 뒤현재 문자의 인덱스에 1 증가하여 누적 배열을 만들고그에 따른 구간에 특정 알파벳을 구하여 해결  import java.io.*;import java.util.StringTokenizer;public class _16139 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStream..

알고리즘 2024.11.22

[백준, 자바, 11660번] 구간 합 구하기 5

풀이어제 구간 합 유형 문제를 풀어서 그런지해결 방법이 쉽게 떠올랐음단순히 2차원 배열을 그냥 하나의 배열의 묶음으로 생각하고 각 배열을 누적하여 합한 다음원하는 구간의 합을 구하여 해결아래 주석은 배열 2개로기존 입력 값을 담은 배열과, 누적 합을 구한 배열 두개로 한 거고주석이 없는 코드는 하나의 배열로 해결한 코드 import java.io.*;import java.util.Arrays;import java.util.StringTokenizer;public class _11660 {// public static void main(String[] args) throws IOException {// BufferedReader br = new BufferedReader(new Input..

알고리즘 2024.11.22

[백준, 자바, 2559번] 수열 (누적 합)

풀이누적 합 관련 문제를 푼지 시간이 좀 지나서다시 해봤는데... 역시 알고보면 간단한데헤맬땐 왜 이렇게 복잡한지...그냥 단순히 누적 합을 구한 배열에서 특정 범위의 합이 알고 싶다면누적 합 배열의 현재 위치에서 따른 특정 거리의 위치의 값을 빼주면원하는 구간의 누적 합을 알 수 있다는 거...예를 들어 li = [0, 3, 1, -3, -12, -12, -9, -2, 11, 19, 16] 이렇게 누적 합을 구했다면 5일 차이의 경우에 3일 차라면 li[3-1+5]-li[3-1] 이렇게 해서 -3이 되는 것.3-1은 인덱스가 0부터 시작이기에 그럼그래서 아래와 같이 해결. // 1 방법import java.util.Scanner;public class Main { public static void..

알고리즘 2024.11.21

[백준, 자바, 9184번] 신나는 함수 실행

풀이분명히 답도 잘 나오고 하는데 무슨 문제가 있는지 한참 고민했던 문제..처음에는 뭔가 규칙을 찾아서 수학적으로 풀 수 있지 않을까 했는데뭔가 변동되는 것들이 많아서 DP를 사용하기로 함그런데 우선 DP를 어떻게 할까하고 생각해보다가그냥 찾고자 하는 값이 11,1,5 라고 했을 때 1115라는 문자로 변경 후 찾고 값을 넣어주면서 DP 값을 가져오도록 해서 해결했음그런데 출력도 문제 없고 무슨 문제일까 계속 찾아봐도 답이 안나옴.그래서 배열을 사용해서 해결하니까, 너무 쉽게 됨이후 다시 원래 해결 방법으로 풀고자 다시 생각해보니11, 1, 5 라고 할 때와 1, 11, 5와 1, 1, 15 같이 여러 개가 나올 수 있다는 것을 파악 후문자로 변경하는 함수에 별도의 작업을 해주니 해결...즉, 결론은 바..

알고리즘 2024.11.21

[백준, 자바, 14888번] 연산자 끼워넣기

풀이기존 재귀 방식에서 연산자를 활용하는 것으로처음엔 문제를 대충보고 수열도 모든 경우의 수에 대하여 적용하는 것인줄 알았는데수열은 고정이고 연산자만 무작위인 것을 확인하여 아래와 같이 해결 import java.io.*;import java.util.StringTokenizer;public class _14888 { static int N; static int[] li; static int[] cmd = new int[4]; static int[] result = {(int)Math.pow(10,9),-(int)Math.pow(10,9)}; public static void main(String[] args) throws IOException { BufferedR..

알고리즘 2024.11.20

[백준, 자바, 24060번] 알고리즘 수업 - 병합 정렬 1

풀이해당 문제는병합 정렬하는 문제로기존 알고있던 방식보다 더 깔끔하게 작성할 수 있을 것 같아서의사 코드를 참고하면서 작성했고,중간에 M과 cnt가 같으면 탈출할 수 있도록 조건 분기를 넣어좀 더 효율성있도록 코드를 작성. import java.io.*;import java.util.*;public class _24060 { static int M; static int[] li; static int[] check; static int result = -1; static int cnt = 0; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRea..

알고리즘 2024.11.19