본문 바로가기

전체 글

(87)
백준 - 구간 합 구하기 5 (11660) 문제 링크https://www.acmicpc.net/problem/11660 [Silver I] 구간 합 구하기 5 - 11660성능 요약메모리: 129056 KB, 시간: 1268 ms분류다이나믹 프로그래밍, 누적 합제출 일자2024년 9월 2일 10:38:04문제 설명N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처..
백준 - 구간 합 구하기 4 (11659) 문제 링크https://www.acmicpc.net/problem/11659[Silver III] 구간 합 구하기 4 - 11659성능 요약메모리: 55544 KB, 시간: 548 ms분류누적 합제출 일자2024년 8월 22일 13:19:58문제 설명수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.출력총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.알고리즘을 모른채로 풀었을 때, 시간 복잡도 때문에 오답처리되었던 문제이다...
[DB] 파워 오브 데이터베이스 - 개요 (1) 관리 관점으로 본 데이터베이스 종류운영 데이터베이스 (웹 개발은 이곳에 해당)일 기준으로 데이터를 수집, 수정, 보존할 필요가 있는 온라인 트랜잭션 처리 (Online Transaction Processing, OLTP) 에서 주로 사용 됨. 분 단위의 정보들을 지속적으로 반영해야하는 동적인 성격을 가진다. 분석 데이터베이스장시간에 걸쳐 수집된 데이터를 저장하고 동향을 추적할 필요가 있는 온라인 분석 처리 (Online Analytical Processing, OLAP) 에서 주로 사용된다. 주로 동향이나 추세의 흐름을 분석하거나 긴 시간에 걸쳐 수집된 데이터의 통계를 조사하고 전략 사업을 계획할 때 필요한 데이터를 저장한다. 이러한 데이터들은 거의 변화가 없는 정적인 데이터를 저장한다. (특정 시 점의..
[DB] 파워 오브 데이터베이스 - 책을 읽게 된 이유 (0) 미숙한 DB 설계로 인한 시행착오들서버 개발을 처음으로 시작하고, 가장 어렵게 느껴졌던 게 DB 설계였다.그렇지만 크게 고민하지는 않았다. 나는 아직 실무를 접하지 않았고, 회사에 입사하게 된다면 유능한 사수에게 실무레벨의 DB 설계방법을 배울 수 있으리라 생각했기 때문이다. 막상 입사하고 나니, 사수는 없었고 서버 개발에 대한 고민을 나눌 수 있는 동료마저 존재하지 않았다. 홀로 투입된 프로젝트에서 클라이언트의 요구에 맞게 DB 테이블을 구성하려하니 머릿 속으로 데이터 구조가 빠르게 그려지지 않았고, 어떻게 서버 로직을 구성할 것인지 구체적인 답변을 내놓기가 어렵게만 느껴졌다. 테이블을 구성한 이후에도, 요구사항이 변경될 때 마다 스키마를 변경하는 일이 잦아졌다. 요구사항을 듣고 변경될 수도 있는 점들..
[Spring Boot] 프로젝트 템플릿 만들기(6) - 후기 해당 템플릿을 만들고, 실제 프로젝트에 적용해서 사용해보았다. 직접 사용해보니 불편한 점이나 보완해야할 점이 여러 곳에서 보였다.  1. QueryDSL다소 높은 접근 난이도로 인한 유지보수성에 대한 우려 쿼리 DSL을 사용한 Join 쿼리 일부이다.@Overridepublic List get2dGraphData(long masterId, long processId) { QEMIScannerData emiScannerData = QEMIScannerData.eMIScannerData; QEMIHPrediction hPred = QEMIHPrediction.eMIHPrediction; QEMIVPrediction vPred = QEMIVPrediction.eMIVPrediction; ..
[Spring Boot] 프로젝트 템플릿 만들기(5) - 인증 프로젝트를 수행할 때 마다 로그인 기능은 매번 필수적으로 들어가는 기능이였다.로그인 방식이 별도의 요청에 의해 변경되거나 oauth로 변경되지 않는 한, 인증 방식은 동일할 것으로 예상되었기 때문에 인증 과정도 템플릿에 포함하게 되었다. 쿠키 + Jwt 방식으로 인증을 구현했으며, 인증의 주체는 Spring Security 이다. 인증에 사용한 스택은 아래와 같다. - Spring Security 6.22- Jwt (Json Web Token)   토큰 검증 과정인증은 클라이언트가 서버로 요청을 보낼 시, Spring Security가 HTTP Header에 있는 Cookie를 가져와 토큰 검증을 수행한다. 만약 유효한 인증토큰이 아니라면 Controller로 요청이 전달되지 않고, 예외가 발생하여 클라..
[Spring Boot] 프로젝트 템플릿 만들기(4) - 공통 사용 클래스 공통으로 사용하는 클래스는 따로 모듈화하여 전역에서 사용할 수 있도록 설정했다. Constants.class// 프로젝트에 사용할 상수값 정의public class Constants { // COMMON public static final String API_RESPONSE_SUCCESSED = "SUCCESSED"; // Jwt public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String REFRESH_HEADER = "Refresh"; public static final String BEARER_PREFIX = "Bearer "; public static f..
[Spring Boot] 프로젝트 템플릿 만들기(3) - 로깅 실무에서 디버깅을 수행할 때, 로그의 가독성이 디버깅 시간에 큰 영향을 준다는 것을 알게 되었다. 자주 접하게 되는 로그는 3종류가 있었다. 1. Spring boot 서버의 시스템 로그 (logback 이용)2. 디버깅 용으로 서버 소스 내에 붙여서 값을 확인하는 용도의 함수 (ex. system.out.println("~~~")3. DB 로그 3 종류의 로깅 설정을 모두 진행해보고, 좀 더 나은 가독성의 로그를 남겨 디버깅이 용이할 수 있도록 설정을 직접 진행해보았다. 4. API 호출별 로그 가독성을 높이기 위한 메서드 실행정보 로그 추가적으로 API 호출 별로 로그 단락이 구분되어야 파악이 쉬울거라는 판단이 들었고, AOP를 이용하여 각 메서드 실행 시 URL 호출 정보가 남도록 설정을 진행했다...