문제 링크 Problem 두 개의 문자열에서 공통되는 문자를 뽑아 내림차순으로 정렬해서 출력하는 문제이다. 주의해야 할 점은 문자열이 '0'으로만 '0'을 출력해야 하고, 공통되는 문자가 없다면 '-1'을 출력해야 한다. Approach Map의 key:value 특징을 활용하여 풀었다. map 변수 : 더 긴 문자열의 문자 개수를 저장하는 map store 변수 : 공통되는 문자 개수를 저장하는 map 먼저, 두 문자열 중에서 더 긴 문자열을 찾고 map 변수에 저장한다. 긴 문자열에서 0~9 사이의 정수가 몇 번 나왔는지 map 변수에 저장한다. X의 길이 < Y의 길이 for (int i = 0; i < Y.length(); i++) { int num = Y.charAt(i) - '0'; map.p..
문제 링크 Problem 시작 지점으로부터 동, 서, 남, 북 방향으로 이동할 수 있는지에 관한 문제이다. 지나가는 중에 'X'를 만나거나 또는 제한된 범위를 벗어나면 해당 방향으로 이동할 수 없다. Approach 1칸씩 이동할 때마다 조건식을 걸어 지나갈 수 있는지 없는지 확인하면 된다. 체크해야 할 조건 : 범위를 벗어나는 위치인가? if(tmpX > w || tmpY > h || tmpX < 0 || tmpY < 0) return; 지나갈 수 없는('X')인 위치인가? if(park[tmpY].charAt(tmpX) == 'X') return; 위의 조건 중 하나라도 만족한다면 요청을 수행하기 전 원위치로 복귀해야 한다. go 메서드를 보면 임시로 사용할 tmpX, tmpY 변수를 선언했다. fo..
본 글은 다크모드에 최적화되어 있습니다. 스프링에서는 form을 통해 전달받은 값에 대하여 값을 검증하는 기능과 API JSON 요청을 통해 전달받은 값에 대하여 검증을 수행할 수 있다. 설명에 들어가기 앞서 결론은 다음과 같다. form으로 전송한 값을 @ModelAttribute를 통해 받으면 특정 필드가 바인딩에 실패해도 검증을 수행한다. API JSON 통신으로 전송한 값을 @RequestBody를 통해 받으면 필드 바인딩에 실패하면 검증 자체를 수행하지 않는다. 본 글은 @ModelAttribute와 @RequestBody 애너테이션 설명 글이 아니므로 간단하게만 설명하낟. @ModelAttirbute : Http 요청으로 전송한 값을 Controller에서 필드로 받을 필요 없이 객체로 바로 ..
서버는 클라이언트의 각각 다른 요청에 대하여 다른 방식으로 처리할 수 있으며, 클라이언트는 서버에서 반환해주는 데이터를 제한하여 받을 수 있다. 그것을 가능하게 해주는 것이 바로 consumes와 produces이다. consumes : Content-type헤더, 서버에서 클라이언트의 요청을 제한적으로 받아들인다. produces : Accept 헤더, 클라이언트는 서버가 반환하는 데이터를 제한적으로 받아들인다. Spring에서는 클라이언트의 요청을 제한적으로 처리할 수 있는 다음의 기능을 제공한다. // consumes = "처리 가능한 Media Type" @GetMapping(value = "/mapping-test", consumes = "text/plain") 위와 같이 사용하면 클라이언트의 ..