이번 포스팅에서는 코딩테스트에 자주 출제되는 그래프, 트리를 탐색하는 방법인 DFS(Depth-First Search)와 BFS(Breadth-First Search)에 대해서 소개하려고 한다. DFS (Depth-First Search) DFS는 하나의 노드에서 갈 수 있는 노드가 여러개 있다고 했을 때, 하나의 노드에 대해서 완벽하게 탐색하고난 후 다음 노드에 대해서 탐색하는 방법을 말한다. 좀 더 교과서적으로 정리해보자면 다음 분기(Branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법을 DFS라고 한다. 하나의 길로 쭈우우욱 가보고 막히면 돌아와서 다음 길로 가는 형태를 말한다. 보통 모든 노드를 방문해야 할 경우 DFS를 선택한다. DFS 알고리즘을 프로그래밍할 때는 일반적으로 재귀함..
Vuex는 Vue.js 애플리케이션에서 사용할 수 있는 상태관리 라이브러리입니다. 애플리케이션에 존재하는 모든 컴포넌트들에서 접근 가능한 중앙 집중식 데이터 저장소이고, 이를 통해 모든 데이터의 흐름을 중앙에서 관리할 수 있습니다. 설치방법 vuex를 사용하고자하는 프로젝트 경로에 가서 아래 명령어를 통해 Vuex 라이브러리를 설치할 수 있다. npm install vuex Vue Router와 마찬가지로 Vue.js 애플리케이션에 Store를 주입해 모든 컴포넌트에서 this.$store와 같이 접근할 수 있게 할 수 있다. import Vuex from 'vuex'; const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(..
Vue.js 로 개발을 하기 위해서 거의 필수적으로 사용되는 Vue Router 라이브러리에 대해서 공부해보자. 기타 블로그보다 공식 홈페이지가 더 잘 되어 있어서 공식 홈페이지를 기반으로 설명할 예정이고, 프로젝트를 하며 고민했던 부분이나 참고할만한 부분을 추가로 작성하려고 한다. router.vuejs.org/kr/ Vue Router router.vuejs.org 내가 이해한 Vue Router는 어떤 URL이 입력되었을 때 어떤 컴포넌트를 보여줄지를 매칭시켜주는 역할이다. 설치방법 Vue Router를 사용하고자 하는 프로젝트 경로에가서 다음 명령어로 해당 라이브러리를 설치한다. npm install vue-router Vue Router를 위한 경로를 별도로 생성하지 않고 main.ts 파일에서..
1. 무한루프를 통해 테스트 케이스를 실행하는 경우 특정 조건이 일치하는 것을 찾는 문제에서, 테스트 케이스의 수가 정해지는 것이 아니라 무한루프를 통해서 확인한다면 Boolean 배열에 저장해 활용함으로써 시간 단축이 가능하다. 2. 소수 빠르게 구하기 소수인지 확인은 2 ~ (i ** 0.5) + 1 의 범위만 확인해도 된다. 3. 파이썬에서의 전역변수 처리 함수 외부에 있는 전역변수(입력 값)을 함수에서 사용하려면 global 키워드를 사용하면 된다. 4. 빠른 입출력함수 input(), print() 대신 sys.stdin.readline(), sys.stdout.write() 함수를 사용하는 것이 빠르다. 5. 다양한 기본 라이브러리 사용 collections(deque, Counter, .....
동적 계획법(Dynamic Programming) 이란? 동적 계획법이란 어떠한 문제에 대한 최적해를 얻고자할때 해당 문제에 대해 부분적으로 분할하여 작은 문제를 먼저 해결한 뒤, 각 부분에 대해 최적의 해답을 차례로 구해가는 알고리즘이다. 솔직히 이런 이론적인 어려운 말보다 내가 이해한 것을 말하자면 "분할 정복을 통해서 문제를 해결하는데 동일한 문제는 한번만 풀자" 이다. 단순 분할 정복은 동일한 문제를 반복적으로 계산해 시간을 낭비한다는 단점이 있다. 동적 계획법은 이러한 비효율적인 부분을 해결할 수 있다는 장점이 있다. 따라서 동적 계획법을 통해 문제를 해결하게 된다면 단일항 시간복잡도를 통해 문제를 해결할 수 있다. 위 사진은 피보나치 수열의 값을 재귀함수를 통해 구할 때 거치게되는 노드 트리이..
Spring Boot 에서는 사용자 입력 값에 대한 Validation, 즉 검증 과정을 위한 기능들을 제공한다. 그리고 사용자에게 응답 값으로 전달되는 데이터에 대해서 원하는 값만 전달하도록 Filtering 기능을 제공한다. 이번 포스트에서는 이러한 Validation와 Filtering을 하기 위한 방법에 대해서 알아보도록 한다. Validation Spring Boot를 사용해 웹 서버와 같은 애플리케이션을 개발할 때, 데이터를 검증(Validation)해야 하는 상황을 일반적으로 자주 발생하는 일이다. 사용자가 입력하는 이메일, 휴대폰 번호 등 다양한 입력값에 대해서 많은 검증이 필요하다. 검증에서 그치는 것 뿐만 아니라 사용자가 원인을 쉽게 파악하고 이해할 수 있도록 API 응답을 제공해야 한..