본문 바로가기
반응형

개념공부41

[JavaScript] 숫자,문자가 섞인 문자열에서 숫자만 추출하기 이번에 Spring을 이용한 아파트 실거래가 검색 홈페이지를 만들면서 xml데이터를 추출할 일이 있었다. 원하는 가격 내 검색기능을 구현하기 위해 데이터에 들어있는 실 거래가와, 사용자가 입력한 최소, 최대값을 비교해서 Client에게 뿌려주게 하려 했다. 하지만 실거래가 데이터가 13,000 , 25,000, 5,000 이런식으로 문자열과 숫자가 섞인 데이터였다. ParseInt()를 이용하여 실거래가를 int형으로 변환하려고 했으나 ','가 섞여있어서 이상한 데이터가 나왔다. 이를 해결하기 위해 JavaScript에서 제공하는 함수인 replace와 정규식을 이용하여 숫자와 문자가 섞인 데이터에서 숫자만 뽑아와서 비교해주는 기능을 작성하였다. 숫자가 아닌 문자를 모두 선택하는 정규식인 /[^0-9]/.. 2021. 11. 3.
[REST] RESTFul 설정 순서 1. pom.xml에 json과 rest가 잘 동작하는지 확인할 수 있는 swagger를 추가해준다. 20210307 org.json json ${json-version} io.springfox springfox-swagger2 2.4.0 io.springfox springfox-swagger-ui 2.4.0 2. src/main/java에 swagger.java파일을 넣는다. 3. servlet-context.xml 파일에 mapping정보를 추가한다. 4. servlet-context.xml 파일에 기본루트 : MVC project 만들 때 설정한 기본 루트로 설정한다. 5. controller 패키지 안에 @RestController를 지정할 컨트롤러를 하나 생성한 후 GET,POST,PUT,DEL.. 2021. 10. 29.
[Junit] 단정함수 및 기능 단정함수 기능 aeesrtNotNull(a) 객체 a가 null이 아님을 확인 테스트 할 대상 객체나, 함수를 수행한 결과가 null이 아닌지 검사 assertEquals(a,b) 객체 a와 b의 값이 일치하는지 확인 assertArrayEqauls(a,b) 배열 a와 b가 일치하는지 확인 assertSame(a,b) 객체 a와 b가 같은 객체인지 확인 assertEquals(a,b)는 값이 일치하는지만 확인한다면 assertSame(a,b)는 두 객체의 레퍼런스가 동일한지를 확인 assertTrue(a) 조건 A가 참인지를 확인 2021. 10. 22.
[Spring / BackEnd] 404 Error Exception 날리는 법 보호되어 있는 글 입니다. 2021. 10. 20.
[Graph] 다익스트라(Dijkstra) 알고리즘 - 다익스트라 DP를 활용한 정점과 정점 사이의 최단거리를 알아내는 최단경로알고리즘이다. 하나의 출발지에서 모든 정점을 도착지로 한 최단경로를 구할 수 있다. 이때 음의 간선은 포함할 수 없다. Step1. 방문하지 않은 정점 중 S -> 자신으로의 비용이 최소인 정점 선택 Step2. 선택한 정점을 경유지로 해서 아직 방문하지 않은 다른 정점과의 비용을 계산해서 최적을 갱신 - 이전에 선택된 정점은 경유지를 통해 가는 것 보다 무조건 더 짧기 때문에 고려 X 위 상태에서는 시작점 s(0)를 시작으로 갈 수 있는 정점인 t(10), y(5)을 우선순위 큐에 넣는다. 큐는 가중치가 작은 순서대로 정렬므로 y(5)를 기준으로 다시 탐색한다. 이 과정에서 t(10)은 s->y->t(8)의 비용이 더 저렴하므로.. 2021. 9. 30.
[Graph] 위상정렬 - 위상정렬 어떤 일을 하는 순서를 찾는 알고리즘으로, 큐에 들어있는것들은 간선의 개수가 0개인 것이고, 큐에서 빼서 체크할 때에도 들어오는 간선의 개수가 0인 것을 넣는다. - 기본적으로 필요한 변수 PriorityQueue or Queue : 정점들을 저장하기 위한 자료구조 connect[] : i에 연결된 간선들의 수를 저장하기 위한 배열 ArrayList : 각 정점이 가리키는 노드를 저장하기 위한 인접리스트 - 문제푸는 팁(오로지 내 생각) 보통 어떤일의 순서를 출력하시오, 두 정점에 대한 선행관계, 우선순위가 주어진다. - 관련된 문제 해설 백준 1766. 문제집 🅰 백준 1766. 문제집 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 .. 2021. 9. 28.
CT(수의 표현, 유클리드 호제, 페르마의 소정리) - 수의 표현 1의 배수 2의 배수 : 짝수 3의 배수 4의 배수 5의 배수 : 2.5를 이용한 소인수 분해 6의 배수 : 어떤 수든 연속적으로 3번 곱하면 6의 배수가 됨 / (a-1)a(a+1) 7의 배수 : 요일(기준요일 + 경과일), 달력, 13일의 금요일 8의 배수 : 홀수의 제곱 % 8 = 1이 나오는 수(정수의 특징) - 유클리드 호제 (큰 수나 어려운 숫자에 대한 GCD를 쉽게 구하는 방법) 1. 큰수를 작은수로 나누어 떨어지지 않기 때문에 큰수를 작은수로 나누어 나머지를 구한다. 2. 작은수를 나머지로 나누어 나머지를 구한다. 3. 2번을 계속 반복적으로 수행 ==> 나머지가 0이 나올때 까지 ==> 나머지가 0이 될때는 제수가 GCD(최대공약수)이다. ex) (120,150) -> 15.. 2021. 9. 27.
[2021-09-23] Sliding Window Sliding Window - 배열이나 리스트 요소의 일정 범위(k개)의 값을 비교할 때 사용하면 유용한 알고리즘 - 서브 배열의 요소를 순회하다 보면 중복되는 요소들이 존재하고 이 중복된 요소를 재사용하는 방법 - 방법 1. 윈도우(일정 범위의 요소 ==> k개)의 요소를 원하는 방법으로 처리 2. 윈도우의 시작부분을 빼고, 윈도우 맨 끝에 새 요소를 추가 ex) 2, 4, 7, 10, 8, 4, 6, 5, 7, 1 정수로 이루어진 배열에서 길이가 4인 서브 배열의 합이 가장 큰 서브 배열 구하기 시간복잡도 O(N) 2021. 9. 23.
[Kruskal Algorithm] 크루스칼 알고리즘(feat. Union-find) 크루스칼 알고리즘을 이해하기 위해서는 신장트리, 최소 신장트리에 대한 개념을 먼저 이해해야 한다. 신장트리란 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다. * 모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건은 트리의 조건이기도 하다. 이렇게 서로 사이클이 발생하지 않고 모든 정점을 잇는 경로를 신장트리라고 한다. 그럼 최소신장트리(MST)란 무엇일까? 최소 신장 트리(MST)란 최소한의 비용으로 구성되는 신장 트리를 말한다. 이처럼 간선에 대한 가중치가 주어졌을 때 최소한의 가중치를 가지고 모든 정점을 잇는 트리이다. 이제 크루스칼 알고리즘에 대해 알아보겠다 크루스칼 알고리즘이란 MST를 구하는 방식 중 하나로 간선의 가중치의 합이 최솟값이 되도록.. 2021. 9. 16.