분류 전체보기 102

17. Spring Boot 오류 처리하기

웹개발을 하다보면 정말 많은수의 에러페이지와 마주한다. 현재 잘 운영중인 사이트도 억지로 파라미터를 변조하거나, PostMan따위로 허위값을 보내면 에러페이지를 확인할 수 있다. 아래 두가지 에러페이지를 비교해보자. 엄청깔끔할것 같아서 네이버를 선택했는데 네이버도 그렇게 깔끔한 에러페이지는 아닌것같다. 여하튼, 위와같이 에러가 발생했을시, 사용자가 마주하는 에러페이지가 내 포탈과 같다면, 사용자의 신뢰도는 매우 떨어지게 될것이다. 그렇다면 HTTP에러가 발생했을시에, 특정 화면을 렌더링함으로써 사용자에게 신뢰를 주는 에러페이지를 만들어보자. 1.WAS에서 설정하는법 - Tomcat에서, ~{CATALINA_HOME}/conf/web.xml에 아래와 같이 에러와, 해당 에러가 발생했을시 보낼 페이지를 ma..

동적으로 생성된 태그에 click 이벤트 달기

javascript환경에서 동적으로 태그가 그려지는경우에, 해당 태그에 event를 달기 힘들거나, 일일히 달기 귀찮을때 사용할 수 있는 방법이다. 원래같으면 다음과 같이 작성했을것이다. function testcode(){ $('.plupload_done input[type=radio]').click(function(){ alert('test!!'); }); } 만약 해당스크립트가 선언될때 DOM이 그려져 있다면 아무 문제가없이 동작할 것이다. 하지만 해당 function이 선언된 후에, 즉 특정 동작을 통해 동적으로 생긴 태그라면 해당 동작은 동작하지 않는다. 이럴땐 다음과같이 작성하면 된다. function testcode(){ $(document).on("click", ".plupload_done..

정리/Javascript 2023.05.25

[알고리즘] 힙 정렬(heap sort)

힙은 '최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전이진트리 형태로 만들어진 자료구조'다. 힙정렬에 대해 설명하기 위해서는 트리에 대해서 설명이 필요하다. 트리란?? 트리는 두 지점의 연결 관계로 구성되어 있는데, 계층관계가 존재한다는 것이 특징다. 우리는 하나의 연결 관계에서 위쪽에 있는 점을 부모라고 부르며, 아래쪽에 있는 점을 자식이라고 부를 것 입니다. 이 외에도 추가적인 용어들이 많은데, 아래쪽 사진을 참고하면서 용어를 이해해봅시다. 노드: 각 지점을 의미합니다. 루트 노드: 트리에서 맨 꼭데기를 의미합니다. 위쪽 조직도를 보면, 루트 노드는 회사 대표가 되겠죠? 부모, 자식: 트리에서 연결된 두 노드의 관계를 의미하는데, 더 위쪽에 있는 노드를 부모 노드, 아래쪽에 있는 노드를 자식 노드라고..

[알고리즘] 병합 정렬(merge sort)

퀵소트를 만나기전까지 제일 이해가 안됐던 병합정렬을 기록한다. 병합정렬이란?? 병합정렬은 분할정복(Divide & Conquer)정렬중 하나로, 특정 리스트를 분할하고, 정렬하여, 병합하는 일련의 과정을 거치며 정렬한다. 퀵 정렬은 피벗 값에 따라서 편향되게 분할할 가능성이 있다는 점에서 최악의 경우 O(N^2)의 시간 복잡도를 가지지만 병합 정렬은 정확히 반절씩 나눈다는 점에서 최악의 경우에도 O(N*logN)을 보장한다. 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 알고리즘의 하나이다. 존 폰 노이만이 1945년에 개발했다. 하향식 합병 정렬에 대한 자세한 설명과 분석은 1..

[알고리즘] 퀵 정렬(quick sort)

정렬을 배우기 시작했다. 버블정렬, 선택정렬, 삽입정렬, 기수정렬, 병합정렬 등 다양한 정렬을 배웠다. (병합정렬이 가장 어려웠음) 코딩테스트 오픈카톡방에서 고수들끼리 하는 퀵 소트를 배울 차례가 됐다. 아무리 읽어도 도~저히 이해가 안되는것이다. 그러던중 유튜브에서 좋은 알고리즘 해석영상을 찾고 바로 이해가 되었다. https://www.youtube.com/watch?v=cWH49IKDIiI&ab_channel=%EC%BD%94%EB%94%A9%ED%95%98%EB%8A%94%EA%B1%B0%EB%8B%88 내가 이해한 퀵소트는 다음 순서를 따른다. pivot을잡는다. pivot이란 퀵소트에서 가장 중요한 개념으로, 쉽게말하면 기준을 잡는것이다. 위 영상과 코드트리에서는 배열 제일 마지막값을 pivo..

Spring Boot에서 HTTP API사용하기(json)

웹개발을 하다보면 정말 많이 하게 되는 HTTP API개발. 물론 이전직장에서도 많이 개발해봤지만 Boot를 사용해서 개발을 하지는 않았기 때문에, Spring Boot환경에서의 API 관련 기능을 정리하려 한다. @RestController class위에 @RestController Annotation이 존재한다면, 해당클래스의 모든 메소드는 @ResponseBody가 포함된다. @ResponseBody 해당 Annotation이 있다면, HttpServletResponse에 VO(Value Object)객체를 json으로 변환하여 담는다. 특정 객체를 return하면 자동으로 json타입으로 변환하여 responseBody에 담는다. 이전직장에서는 response에 일일이 key/value로 담고 B..

정리/Spring Boot 2023.05.16

[코드트리] 수열의 순서 바꾸기

어려움 문제는 확실히 난이도가 높다........ 화이팅.. 1이상 N이하의 숫자가 겹치지 않게 구성된, 원소의 개수가 N개인 수열이 하나 주어졌을 때, 맨 앞에 있는 숫자를 선택해 수열 중간에 집어넣는 행동을 최소 몇 번 반복해야 숫자들이 오름차순 정렬이 되는지를 계산하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에는 N이 주어집니다. 두 번째 줄에는 N개의 숫자가 공백을 사이에 두고 주어집니다. 1 ≤ N ≤ 100 출력 형식 첫 번째 줄에 수열을 오름차순으로 정렬하기 위해 맨 앞에 있는 원소를 뒤로 밀어 넣어야 하는 최소 횟수를 출력합니다. 입출력 예제 예제1 입력: 4 1 2 4 3 출력: 3 예제 설명 처음 숫자 1을 4와 3 사이로 옮기면 2 4 1 3이 됩니다. 그 다음 숫자 2를 1과..

[코드트리] 홀수 짝수의 묶음

간만에 봐도 잘 이해가안되는 문제가 생겨서 기록한다.. 그리고 기간이 얼마안남아서,, 흑흑 증말 어렵다 N개의 숫자들이 주어지면 주어진 숫자들을 전부 사용하여, 각 묶음으로 나눠 각각의 합을 구했을 때 첫 번째 묶음부터 순서대로 그 합이 짝수, 홀수, 짝수, 홀수, 짝수, … 이렇게 짝수에서 시작하여 짝홀이 계속 번갈아가면서 나오게끔 하는 만들 수 있는 최대 묶음 수를 구하는 프로그램을 작성해보세요. 단, 주어진 순서에 상관없이 묶음을 만들어도 됩니다. 입력 형식 첫 번째 줄에는 주어지는 숫자의 개수 N이 주어집니다. 두 번째 줄에는 N개의 숫자가 공백을 사이에 두고 주어집니다. 2 ≤ N ≤ 1,000 1 ≤ 주어지는 숫자들 ≤ 100 출력 형식 첫 번째 줄에 짝홀이 계속 번갈아가면서 나오게끔 하는 만..

[코드트리] 세 수의 최대 곱

어려운 문제는 아니다, 시간복잡도를 벗어나는 이슈를 피해 적당한 값을 추려놓고 그 중에 선택을 하는 문제이다. 배우지 않았으면 풀지 못했을 문제일것같아 기록함 정수 n과 n개의 수가 주어졌을 때, 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 구하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에 정수 n이 주어집니다. 두 번째 줄에 n개의 정수가 공백을 사이에 두고 주어집니다. 3 ≤ n ≤ 100,000 -1,000 ≤ 주어지는 수 ≤ 1,000 출력 형식 첫 번째 줄에 3개의 숫자를 적절하게 골라 나올 수 있는 곱 중 최대값을 출력합니다. 입출력 예제 예제1 입력: 12 10 -5 -2 4 -9 15 -3 6 0 7 1 -20 출력: 2700 예제 설명 -20, -9, 15를 추출하여..

[코드트리] ABC 줄 세우기

난이도는 낮지만 나중에 꼭 다시 사용할 알고리즘일것 같아 기록한다. 이것 외에도 최소값의 최댓값, 최댓값의 최솟값에 대한 알고리즘은 반드시 다시 숙지할것. 처음에 n명의 사람이 서있는 순서가 A부터 순서대로 알파벳으로 주어지면 알파벳 순으로 줄을 세우려고 합니다. 단, 순서대로 줄을 세우기 위해서는 인접한 두 사람의 위치를 계속 바꾸는 행위만 가능하다고 할 때, 가능한 최소 횟수를 구하는 프로그램을 작성해보세요. 예를 들어 4명의 사람이 서있는 순서가 A D C B와 같이 주어지면, A, B, C, D 순으로 줄을 세워야 합니다. 입력 형식 첫 번째 줄에 정수 n이 주어집니다. 두 번째 줄에 n명의 사람이 서있는 순서가 알파벳으로 공백을 사이에 두고 주어집니다. 1 ≤ n ≤ 26 출력 형식 첫 번째 줄..