본문 바로가기

전체 글

[네트워크] TCP/IP 모델에 대해서 - 컴도리돌이 TCP/ IP (Transmission Control Protocol/ Internet Protocol) 현재의 인터넷에서 사용하는 프로토콜 그룹이며, 상호작용하는 모듈로 이루어진 계층적 프로토콜이다. 각 모듈을 특정한 기능을 제공하며 원래의 TCP/IP 프로토콜은 하드웨어에 설치된 4가지 소프트웨어 계층으로 정의되지만 현재는 5 계층으로 간주한다. 응용 계층(Application Layer) - 프로토콜 : HTTP, SMTP, FTP - PDU : Message OSI 모델의 최상위 계층으로 다양하게 존재하는 응용 환경에서 공통적으로 필요한 기능을 다룬다. 시스템 간의 응용 처리는 상호 간에 통신하면서 일련의 업무를 처리할 수 있도록 필요한 서비스 기능을 제공한다. 이메일, 파일 전송, 웹사이트 조회.. 더보기
[JAVA][백준 11062][게임 이론][DP] 카드 게임 - 컴도리돌이 11062번: 카드 게임 근우와 명우는 재미있는 카드 게임을 하고 있다. N개의 카드가 일렬로 놓여 있다. 각 카드에는 점수가 적혀있다. 근우부터 시작하여 번갈아가면서 턴이 진행되는데 한 턴에는 가장 왼쪽에 있는 www.acmicpc.net 근우가 왼쪽/오른쪽을 선택했을 때 명우가 선택할 카드의 합이 최소가 되어야 한다. 맨 왼쪽/오른쪽 카드의 수만 비교해서는 최선의 선택이 되지 않기 때문에 다이나믹 프로그래밍으로 접근해야 한다. 여기서 주의할 점은 근우와 명우의 차례에 따라서 구하는 식이 다르기 때문에 2차원 배열을 사용해야 한다. 근우와 명우가 카드를 선택하다가 남은 카드의 상태를 점화식을 세우고, dp [i][j] = i~j의 카드가 있을 때 근우가 선택할 수 있는 최대 합을 만들어야 한다. n이 .. 더보기
[JAVA][백준 2473][투 포인터] 세 용액 - 컴도리돌이 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 세 용액의 합이 0과 가장 근사한 값을 찾아야 한다. 용액의 수가 5000 이하이기 때문에 최악일 경우 5000 * 2500 = 7500000의 연산을 계산하기 때문에 시간 복잡도에 대한 걱정 없이 해결할 수 있었다. 기준점 i번째의 값부터 n-1의 값까지 j번째와 k번째의 합들 중에서 최솟값을 구했다. 여기서 j번째는 i+1, k번째는 n-1번째로 설정하여 투 포인터 알고리즘으로 해결하였다. i, j, k번째의 합이 비교대상 comp과 비.. 더보기
[JAVA][백준 7570][그리디] 줄 세우기 - 컴도리돌이 7570번: 줄 세우기 입력은 2 개의 줄로 이루어져 있다. 첫 줄에는 어린이 수를 나타내는 정수가 주어진다. 둘째 줄에는 처음에 줄서있는 어린이들의 번호가 차례대로 주어진다. 주어진 번호들 사이에는 공백이 하 www.acmicpc.net 해당 문제는 놀랍게도 가장 긴 증가수열 알고리즘을 활용해서 풀어야 한다. 생각보다 어려워서 구글링 하여 다른 분들의 코드를 확인하여 해결할 수 있었다. 다른 분들의 코드가 현저히 짧은 것을 보고 상심이 매우 컸다. 7570 문제는 줄의 맨 앞이나 맨 뒤로만 어린이들을 보내서 줄을 세워야 한다. 그렇기 때문에 연속된 수들 중 가장 긴 증가수열의 길이를 구하고 n에서 구한 길이를 빼면 최소 횟수를 구할 수 있다. 더보기
[JAVA][백준 11657][벨만포드] 타임머신 - 컴도리돌이 문제에서 시작 도시 A, 도착 도시 B 그리고 버스를 타고 이동하는 데 걸리는 시간 C가 주어졌다. 여기서 중요한 부분은 이동하는 데 걸리는 시간 C가 음수인 경우도 있다는 점이다. 웬만한 그래프 문제를 풀었다면 이동 시간이 음수가 주어지면 떠올려하는 알고리즘은 하나밖에 존재하지 않는다. 벨만 포드 알고리즘 벨만 포드 알고리즘은 정점의 개수만큼 반복문을 돌려서 모든 간선들을 확인하여 노드 간의 최단 거리를 갱신하는 알고리즘이다. 여기서 음수 간선 순환이 발생하는지 체크하고 싶다면 정점의 개수만큼 반복문을 돌리면 된다. n번째 반복문을 돌리는데 최단 거리가 다시 갱신이 된다면 음의 사이클이 존재하는 것이다. 더보기
[JAVA][백준 1092][Greedy, Sort] 배 - 컴도리돌이 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 크레인의 무게 제한과 박스의 무게를 "crain", "box" 이름으로 ArrayList로 담았다. 그리고 해당 ArrayList들을 모두 내림차순 정렬을 시켰다. ArrayList를 내림차순 정렬을 할 때는 Collection.reverseOrder() 함수를 sort안에 명시해주어야 한다. 정렬된 두 ArrayList의 첫 번째 인덱스 값을 비교한다. 만약 크레인의 첫 번째 값이 박스의 첫 번째 값보다 작을 경우 모든 박스를 담을 수 없기 때.. 더보기
[JAVA][백준 8980][그리디, 정렬] 택배 - 컴도리돌이 8980번: 택배 입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이 www.acmicpc.net 더보기
[Spring][Security] 스프링 시큐리티(Spring Security)에 대해서 - 스프링 시큐리티 아키텍처, 필터 - 컴도리돌이 스프링 시큐리티(Spring Seucirty) 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. 서블릿 필터와 이들로 구성된 필터 체인으로의 위임 모델을 사용한다. 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안 관련 로직을 작성하지 않아도 된다. 보안 용어 인증(Authenticate) : 접근하려는 유저의 권한을 확인하는 절차 ex) 회원가입, 로그인 인가(Authorization) : 인증된 사용자에 대해서 권한을 확인하고 허락하는 것. 접근 주체(Principal) : 보호된 대상에 접근하는 대상 인증 아키텍처 1. 유저가 폼(form)을 통해 로그인 정보를 입력하고 인증 요청을 보낸다. Authentication.. 더보기

728x90