본문 바로가기

Category

(227)
2805 나무자르기(S2) 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱..
광물 캐기 - Lv2 문제 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 재귀 + 제약조건을 사용하여 모든 경우의 수를 판단하였다. 이 과정에서 시간 낭비를 막기 위해 기저조건을 여러개 판단했다. 실제 풀이 과정에서 자꾸 에러가 나는 게 있었는데, 곡괭이를 사용하지 못하는 조건이 정산의 우선조건(모든 곡괭이 사용) 위에 있어서 났던 문제였다. 즉, 그냥 간단히 제약조건의 순서가 바뀌어서 에러가 났다는 이야기였다. 다음에는 이 부분을 조금 더 고려할 것. 또..
9012 - 괄호[S4] 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은..
[JIRA] 지라에 대해 (About Jira) 개요 이번 프로젝트에서 다시 한번 지라를 다루게 되었다. 기존 ssafy의 gitlab과는 달리, jira 공식 사이트에서 계정을 생성하여 운영해 볼 생각이다. (물론 크게 다르지는 않다. 호스팅의 차이만 있을 뿐) 이 과정에서 먼저 지라에 대해 정리해보고자 한다. 내가 사용했던 방법 ( The way I used it) 지라를 사용하는데 공식 방법이나 획일화된 방법이 있는 것은 아니라고 생각한다. 나는 지금까지 이렇게 사용하였다. 지금까지의 지라 사용법은 다음과 같았다. 1. 스프린트 계획 스크럼 방법론을 따라, 주차별 스프린트 계획을 세웠다. 이는 월요일 아침 즈음에 시작해서, 오전 시간을 활용해 회의하고 이번 주차에 해야 할 목표와 세부 사항을 설정하였다. 1. a sprint plan Follow..
1260 - DFS와 BFS[S2] 문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ..
CSRF의 정의와 프로젝트에서의 방어했던 방법 CSRF (Cross-Site Request Forgery) CSRF는 희생자가 이미 인증된 상태에서 공격자가 의도한 행위를 서버에 요청하게 만드는 공격 유형이다. 이 공격은 토큰이나 쿠키를 직접 탈취하는 것이 아니라, 희생자의 브라우저를 이용하여 공격자가 원하는 요청을 서버에 보내게 만드는 방식으로 이루어진다. https://tibetsandfox.tistory.com/11 CSRF(Cross Site Request Forgery)란? CSRF란? CSRF는 Cross Site Request Forgery(사이트 간 요청 위조)의 줄임말로 웹 취약점 중 하나입니다. 공격자가 희생자의 권한을 도용하여 특정 웹 사이트의 기능을 실행하게 할 수 있으며 이는 희생자 tibetsandfox.tistory.com..
인터셉터와 AOP의 차이, 인터셉터의 추가 개념 개요 이번 프로젝터에서 prehandler를 사용하여 인터셉터 기능을 사용했었고, 로그 수집을 위해 포인트컷을 사용하여 AOP(로그 수집)의 기능도 구현해봤다. 문득 드는 생각이 두 기능이 로직상 유사해 보이는데, 똑같은 거 같은데 굳이 인터셉터를 쓰는 이유가 뭘까? 정확히 말하면 인터셉터의 기능을 AOP가 전부 할 수 있지 않나? 싶어 조사해보았다. 그림으로 보는 도식도 일단 필터는 이전에 학습했던 것처럼, 스프링 영역 밖에서 서블릿의 입출력을 관리한다. Dispatcher Servlet의 호출 이전/이후로 인터셉터는 동작한다.AOP의 경우 애플리케이션 전방에 걸쳐 다양하게 작업을 적용할 수 있는 것을 확인할 수 있다. 인터셉터의 주요 메소드 preHandle: 이 메소드는 컨트롤러(핸들러) 메소드가 ..
[Elasticsearch] 시스템 구조 및 flow 정리 시스템 구조 이번 프로젝트의 구조도를 한눈에 정리하자면 다름과 같다. Main 서버에는 FE 서버와 본체 비즈니스 서버, Elasticsearch와 연동되는 API 서버가 존재하고, 핵심 로직을 담당한다. Sub 서버에는 ELK 및 배치 프로그램, MySQL의 저장소 위주로 구성하였다. 이는 Elasticsearch와 배치 프로그램이 상대적으로 RAM 용량을 많이 차지하기 때문에, 부하를 줄일 목적으로 Sub 서버를 구성하였다. 데이터 아키텍쳐 - 스크래핑 데이터 정제 구조도이다. 우리는 배치 프로그램을 통해 스크래핑이 허가된 사이트에서(robot.txt 및 정책 확인) 부하를 주지 않는 선에서 데이터를 수집하였다. 이 과정에서 수집된 html 데이터는 텍스트화하여 1차적으로 MongoDB 클라우드에 저..