티스토리챌린지 19

[백준, 자바, 1268번] 임시 반장 정하기

풀이오늘도 깨달았다...문제를 확실히 읽지 않는자너는 그냥 틀려라!!!처음에는 단순히 같은 반이었던 학생을 카운팅하는 것으로중복해도 계속 카운팅해서 제출했다가 틀림.이후 다시 확인해보니 중복을 제거 후 카운팅하는 것으로어떻게 해결할지 고민하다가 그냥3차원 배열을 사용하여 해결하기로 함.이후에 제출했는데 77%에서 틀림.그래서 다시 확인해보니 같은 반이 된 적이 없는 경우에도초기값으로 인해 존재하지 않는 0번 학생이 출력되고 있다는 것을확인하여 변경 후 제출.결론.문제를 똑바로 읽자. import java.io.*;import java.util.HashSet;import java.util.Set;import java.util.StringTokenizer;public class _1268 { publi..

알고리즘 2024.11.27

SpringBoot - JWT 필터를 활용한 전역 인증 구현

1. JWT 기반 인증의 흐름JWT를 사용한 인증 과정은 다음과 같이 진행됩니다:사용자가 로그인하면 서버는 사용자 정보를 검증한 후, JWT 토큰을 생성하여 클라이언트에 반환합니다.클라이언트는 이후 요청 시마다 이 JWT를 헤더에 포함하여 서버로 전달합니다.서버는 전달받은 JWT의 유효성을 검증한 후 요청을 처리합니다.2. 프로젝트 환경 설정Spring Boot 3.xDependencies: Spring Web, Spring Security, jjwt(JSON Web Token), LombokMaven Dependency 추가: io.jsonwebtoken jjwt-api 0.11.5 io.jsonwebtoken jjwt-impl 0.11.5 io.jsonwebtok..

SpringBoot 2024.11.26

[백준, 자바, 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

[백준, 자바, 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

[백준, 자바, 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

[백준, 자바, 20920번] 영단어 암기는 괴로워

풀이해당 문제는 다양한 방법이 있을 것 같은데우선 아래의 풀이는 다음과 같음입력으로 주어지는 단어를 확인 후 조건에 따라 분류하는데우선 길이가 M이상의 경우를 체크한 뒤Map에 추가가 되어 있다면 카운팅을 1 증가 하고없다면 초기화를 해주는데초기화 할 때는, 출력 조건을 위한 정렬을 위해현재 단어와, 카운팅 이렇게 두개의 값을 함께 초기화 해주기.이후 Map의 value를 List로 변환하고, 조건에 따라 정렬해주고 출력하여 해결. import java.io.*;import java.util.*;public class _20920 { public static void main(String[] args) throws IOException { BufferedReader br = new Bu..

알고리즘 2024.11.18