전체 글

    BOJ 19538 - 루머

    www.acmicpc.net/problem/19538 19538번: 루머 예제 1 0분 : 최초 유포자($1$, $6$번 사람)가 루머를 생성한다. 1분 : $1$번 사람은 $2$, $3$번 사람에게 루머를 퍼뜨린다. $2$번 사람은 주변인 $2$명 중 $1$명이 루머를 믿고 있어 루머를 믿게 된다. $3$ www.acmicpc.net 이 문제는 시간 제한이 10초 이며, BFS 로 순회하면서 이중 포문을 돌리더라도 시간초과가 나지 않는다 루머 최초 유포자는 0의 값을 갖도록 초기화 시키고 나머지는 전부 -1 을 갖게 만든다 BFS 로 순회할 것이므로 초기화 작업시에 큐에 미리 최초 유포자 정보를 넣는다. 큐를 돌면서 현재 노드를 기준으로 인접한 다음 노드가 있는지 찾기위해 반복문을 실행한다 인접한 다음..

    Spring REST - REST Controller

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ 이번에는 REST Controller 에 대해서 알아본다. 앞선 포스팅에서는 Jackson 을 이용해 자바에서 JSON 파일을 POJO 로 바꾸는 방법에 대해서만 알아봤지, 스프링을 기반으로 REST 의 기능이 들어간 것을 만들지는 않았다 스프링에서 REST 기능을 넣고 싶으면 REST Controller 를 이용해야한다. 그러나, REST Controller 를 알아보기 전에 HTTP 에 대해서 간단하게 개념을 짚고 갈 필요성이 있다. - HTTP 구조 HTTP 는 HyperText Transfer Protocol 의 약자로, HTML 문서를 교환하기 위해 만들어진 통신 규약이다. HTTP 는 Requ..

    Knapsack Problem

    - DP 와 Knapsack Problem : 배낭 문제는, 어떤 한 사람이 갖고 있는 배낭이 있고, 그 배낭에 담을 수 있는 최대 용량이 주어지며, 이 최대 용량에 한해서, 여러개의 물건들을 집어넣고자 할때, 최대한의 가치를 뽑아내는 방법을 찾는 문제이다. 각 물건들은 무게와 값어치가 명시되어 있고 이들 중에서 배낭에 넣을 수 있으면서, 최대의 값어치를 뽑아내는 경우의 수를 찾아내면 되는 문제이다. 배낭 문제는 다시 말하면 '여러 물건이 있을때, 특정한 조건을 만족하는 조합을 구하는 문제' 라고 볼 수 있다. 배낭 문제는 두가지 유형으로 나뉜다. 물건(짐) 을 쪼갤 수 있는 경우와 물건을 쪼갤 수 없는 경우의 두 유형으로 나뉘는데, 전자의 경우 '분할가능 배낭문제' (Fractional Knapsack..

    BOJ 7579 - 앱

    www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 냅색 응용 문제이다. dp 1차원 배열을 dp[j] : 비용이 j일때 확보가능한 메모리로 정의하고 점화식을 dp[j] = max(dp[j], dp[j - cost[i]] + memory[i]) 로 정의할 수 있다. -> 비용이 j 일때 확보가능한 메모리는, i 번째 앱을 활성화하지 않았을때의 메모리와 i번째 앱을 활성화 했을때의 메모리 값 중 최대치로 정의한다. 여기서 정의한 dp 배열은 메모리에 대한 부분만 담겨 있..

    BOJ 1943 - 동전 분배

    www.acmicpc.net/problem/1943 1943번: 동전 분배 세 개의 입력이 주어진다. 각 입력의 첫째 줄에 동전의 종류 N(1≤N≤100)이 주어진다. 각 입력의 둘째 줄부터 N+1째 줄까지 각각의 동전의 금액과 개수가 빈 칸을 사이에 두고 주어진다. 단, 원장선 www.acmicpc.net 문제에서 요구하는 것은 정확히 절반으로 나눠서 두개로 나눌 수 있는가 없는가 이며, 이를위한 DP 1차원 배열을 만드는데 i 번째 인덱스의 의미는 i 원을 만들어 낼 수 있는지 없는지 판별한값이 들어간다 합이 홀수라면 어떻게 나눠도 정확히 두개로 나눠서 가질 수 없으므로, 예외처리 해주고 합이 짝수인 경우에 한해서 DP 배열을 채운다. 이 문제에서 가장 핵심은, 탑다운 방식으로 탐색해야 한다는것이다...

    Spring REST - Overview

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ - REST REST 는 REpresentational State Transfer 의 약자로, 웹 상에 존재하는 모든 리소스들에 대해서 고유한 URI 를 부여해서 활용하는 방법을 말한다. * REST 의 구성요소로는 아래와 같은 3가지가 있다 1) Resource (자원, URI) : 웹 상에 존재하는 모든 리소스들은 각자마다 고유한 ID 를 가지고 있고, 각 ID 값은 서버에 저장되며, 클라이언트는 이 자원들을 필요로 할때, HTTP Method 를 이용해서 각 리소스들을 요청한다 예를들면, url 보다보면은 이런것들이 있다. ~student/1/profile ~student/2/edit-profile..

    Spring Security - User Registration

    참조한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ - Spring Security & JDBC 앞의 포스팅까지는 DB 와 연동하는게 아니라, 그냥 스프링 앱 메모리에 유저 데이터를 저장해서 인증하는 방식이었는데, 당연히 실제 업무나 상품으로써 내놓을려면 DB 에 저장해놓는게 일반적이다. 그래서 이번 포스팅에서는 DB 와 Spring Security 를 연동하는 방법과 BCrypt 를 이용해서 암호화하여 비밀번호를 저장하는 방법 그리고 회원가입을 만드는 방법에 대해 알아본다. 먼저 DB 와 Spring Security 를 연동하는 방법에 대해 알아본다 Spring Security 와 DB 를 연동할때 주의할점은, Spring Security 가 기본값으로..

    Spring Security - User Roles

    참조한 강의 : Spring & Hibernate For Beginners (www.udemy.com/course/spring-hibernate-tutorial/) - Role Spring Security 를 사용하면 유저의 아이디와 비밀번호에 대한 검증 뿐 아니라, 유저의 타입에 대해서도 검증할 수가 있다. 이 유저가 관리자 계정인지 아니면 일반 직원 계정인지, 아니면 제 3 자의 계정인지 이런것들을 판별할 수 있는데, spring security 에선 이 유저의 역할 즉, role 을 지정해줄 수 있다. role 이 어떤 상수 값이 있는게 아니고, 개발자가 임의로 만들 수 있고, 각 유저에게 부여할 수 있다. 이번 포스팅에서는, role 설정을 어떻게 하는지, 그리고 role 에 따른 웹 리소스 접근..