전체 글(133)
-
[15649 - JAVA] N과 M (1)
문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이 import java.io.*; import java.util.*; public class Main { public static int n, m; public static int[] arr; public static boolean[] visit; public ..
2024.03.12 -
[Spring - Security] OAuth2 클라이언트와 Security 기초 인증 / 인가 처리 (Feat - Kakao Login && Local Login) - 1
코드 버전 Spring boot: 3.2.1Java: JDK 17.0.9Gradle - Groovy 의존성//securityimplementation 'org.springframework.boot:spring-boot-starter-oauth2-client'implementation 'org.springframework.boot:spring-boot-starter-security' //jwtimplementation 'io.jsonwebtoken:jjwt:0.12.3'implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3' 진행 방식 클라이언트에서 로그인 요청을 보내면 서..
2024.03.07 -
[Spring] SSR에서 JWT를 이용한 인증/인가 처리 고민
SSR과 JWT에 대한 고찰여기저기 글을 찾아보면 LocalStorage, Cookie를 이용해 JWT 관리하게 되는데 Spring Boot에서 JSP, thymeleaf 같이 SSR 기반 방식의 경우 JWT를 사용하는 경우는 거의 없습니다. SSR 경우 대부분 세션-쿠키를 이용해 stateful하게 상태관리를 해줍니다. 첫 번째는 LocalStorage 방식의 경우 SSR에서는 구현이 거의 불가능하고 두 번째 Cookie를 이용하는 방법 또한 세션-쿠키를 이용한 방법에 비해 코드의 보안, 복잡도, 생산성이 모두 떨어지기에 굳이 사용하려고 하지 않습니다. 하지만 Cookie를 이용한 방법으로 처리가 가능하고 복잡하긴 하지만 왜 JWT를 사용하지 않고 세션 방식을 사용할까에 대한 고민을 하게 되었습니다. ..
2024.02.14 -
[Spring] JWT 토큰이란 무엇일까?
JWT (JSON WEB TOKEN) 이란 JSON 웹 토큰은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임 표명을 처리하는 JSON을 보관하고 있다. 토큰은 비공개 시크릿 키 또는 공개/비공개 키를 사용하여 서명된다. 간단히 말하자면 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 말하는 것이다. 그리고 이러한 JWT을 이용해 서버와 클라이언트는 사용자가 누구인지 식별한다. JWT 프로세스 사용자 로그인 진행 사용자 확인 Access Token 발급 응답으로 Access Token 저장 데이터 요청 시 Header Access Token 전송 Access Token 검증 실행 JWT 3가지 구조 헤더(Header) : 토큰 타입과 해싱 알고리즘..
2024.01.31 -
[Spring] SSR, CSR HTTP API 이용한 렌더링 방식의 차이점
서비스를 제공하기 위한 방식의 고민 과정을 정리 SSR 방식의 리소스 제공 방식 CSR 방식의 리소스 제공 방식 어쩌면 CSR과 비슷한 HTTP API 제공 방식 렌더링은 서버에 요청한 데이터를 브라우저 화면에 보여주는 것이다. SSR - 서버 사이드 렌더링 서버에서 클라이언트의 페이지 내용을 완전히 그려내어 브라우저에 전달해준다 클라이언트에서 페이지를 이동할 때마다 새로운 페이지를 요청해야한다 장점 초기 로딩 시간이 빠르고 검색 엔진 최적화에 유리하다 렌더링 자체를 서버에서 끝내서 클라이언트에 전달하기 때문에 페이지 생성 시간을 단축 시킬 수 있다. 단점 페이지 전환시 전체 페이지를 로딩하기 때문에 페이지 요청마다 새로고침이 발생하기에 동적 상호작용이 많은 경우 성능이 떨어진다는 문제가 있다 서버에서 ..
2024.01.31 -
[7562 - JAVA] 나이트의 이동
문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있다. 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. 출력 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. 정답 import jav..
2024.01.24