목록전체 글 (255)
-
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cUWU6J/btrs0Jw46A5/Yf3pTNnF5bWJog5A2ZJrxk/img.png)
# 주소 https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net # 문제 # 문제 해설 및 코드 리뷰 import java.util.Scanner; public class Main { static int n; static int dx[] = {-1,1,0,0}; static int dy[] = {0,0,1,-1}; static int[][] arr; static int min = Integer.MAX_VALUE; static boolean[][] v..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cwD98q/btrsMauZQ1U/uv9eZOLg44qHswPsXl2CZ0/img.png)
지금까지 회원가입에 대한 기초적인 틀은 잡혔습니다. 이제부터 해볼 것은 예외상황 처리 과정입니다. 그림과 같이 서버, DB, JPA의 구조가 다음과 같을 때 사용자가 회원가입을 위해 username과 password 등을 Input한다고 해봅시다. 그런데 만약에 회원가입 시도 중 중복된 사용자에 대한 처리는 어떻게 해주는 것이 좋을까요? 회원가입할 때 username이 DB에 있는지 확인하는 루트는 서버 -> DB에 물어보는 방법밖에 없습니다. 그리고 사용자의 username을 20자로 제한하고 싶을 때 어떤 사용자가 20자 이상 입력해서 회원가입을 시도하려한다면 어떻게 막아야할까요? 이건 굳이 DB에 묻지 않더라도 서버의 앞단에서 미리 처리를 해줄 수 있습니다. 이것을 바로 전처리, 후처리 과정이라고 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJxWCH/btrsrUsZ0z8/YVEJ2CD4N2erQYyFtTmk71/img.png)
지난 시간엔 비밀번호를 DB에 넣을 때 그대로 넣으면 문제가 생길 수 있기 때문에 암호화해서 DB에 넣는 작업을 해보겠습니다. 우선AuthService로 이동합니다. 이후 회원가입 메서드 위에 @Transactional을 달아줍니다. 이것을 걸면 함수가 실행되고 종료될 때까지 트랜잭션 관리를 스프링부트가 지원합니다. 보통은 이 트랜잭션을 Write할 때 사용하는데 우리는 Insert, Update, Delete할 때 사용하겠습니다. 왜냐하면 정보처리기사 관련 자격증을 공부해보신 분들이나 제 블로그에 있는 운영체제 포스팅을 읽으신 분은 이해하시겠지만 데이터를 Write할 때에는 그 어떤 사용자도 간섭해서는 안됩니다. 스프링부트에서는 다른 사용자가 접근하여 DB를 수정할 수 있기 때문에 @Transactio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dQeK2w/btrsxD4ncPq/M7a3WkTGklP9l8ODtkTzUk/img.png)
# 주소 https://www.acmicpc.net/problem/22864 22864번: 피로도 첫 번째 줄에 네 정수 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. 맨 처음 피로도는 0이다. www.acmicpc.net # 문제 # 문제 해설 및 코드 리뷰 import java.util.*; class Main{ static int a,b,c,d; static int max = Integer.MIN_VALUE; public static void main(String[] args) { Scanner scan = new Scanner(System.in); a = scan.nextInt(); b = scan.nextInt(); c = scan.nextInt(); d = scan.nextI..