본문 바로가기

전체 글

(215)
14503 - 로봇 청소기[G5] 문제https://www.acmicpc.net/problem/14503 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오.로봇 청소기가 있는 방은 N×M$N \times M$ 크기의 직사각형으로 나타낼 수 있으며, 1×1$1 \times 1$ 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이다. 방의 각 칸은 좌표 (r,c)$(r, c)$로 나타낼 수 있고, 가장 북쪽 줄의 가장 서쪽 칸의 좌표가 (0,0)$(0, 0)$, 가장 남쪽 줄의 가장 동쪽 칸의 좌표가 (N−1,M−1)$(N-1, M-1)$이다. 즉, 좌표 (r,c)$(r, c)$는 북쪽에서 (r+1)$(..
인덱스 확장 기능 사용법 : 인덱스 스킵 스캔 외(친절한 SQL 튜닝) 인덱스 범위 스캔 vs 인덱스 풀 스캔Index Range Scan가장 기본적인 인덱스를 사용한 액세스 방식이다.아래와 같은 그림처럼 인덱스 루트(시작점)까지 수직 이동 후 필요한 범위를 스캔한다.   이전에 이야기했듯, 선두 컬럼을 가공하지 않는 등의 인덱스 순서를 그대로 사용할 수 있는 방법을 사용할 경우 일반적으로 Range Scan이 사용된다.Index Full Scan수직 탐색 없이 바닥의 리프 노드 블록을 ‘전부’ 순회하여 스캔할 경우를 의미한다.    Index Full Scan은 그냥 순차 스캔과 동일한가? (인덱스 풀 스캔의 효용)인덱스 Full Scan과 순차 스캔은 비슷해 보이지만 완전히 동일하지 않다. 인덱스를 읽지만, 정렬된 상태로 인덱스의 모든 엔트리를 순차적으로 읽는 작업이다...
Tomcat-Plain java 차이 (24.07.02) 이 글을 정리했던 핵심적인 이유는 순수 POJO 프로세스로도 Socket을 통해 외부 통신이 가능한데, 사람들은 왜 Tomcat을 개발했을까? 에 대한 궁금증에 있었다. 1. 톰캣을 사용하는 이유: 일반 Java 프로세스와의 차이점일반적인 Java 애플리케이션으로도 HTTP 서버를 구현할 수 있다.하지만 Tomcat을 사용하는 주된 이유는 Java Servlet과 JSP 표준을 지원하는 기능에 있다.주요 차이점과 Tomcat의 장점Java Servlet 및 JSP 지원:Tomcat은 Java 기반의 웹 애플리케이션을 쉽게 구축하고 관리하기 위한 표준인 Servlet API와 JSP(JavaServer Pages)를 지원한다. 이는 HTTP 요청과 응답을 처리하고, 동적 웹 페이지를 생성하기 위한 기능을 ..
인덱스 기본 사용법 : 연산 최적화(친절한 SQL 튜닝) 인덱스 기본 사용법인덱스 컬럼(선두 컬럼)을 가공하지 않아야 인덱스를 정상적으로 사용할 수 있다.즉, ‘인덱스를 정상적으로 사용한다’ 라는 개념은 리프 블록에서 ‘시작점’ 을 찾아 순차 스캔하며 결과를 찾는 것이다. 인덱스 기본 사용법인덱스 컬럼(선두 컬럼)을 가공하지 않아야 인덱스를 정상적으로 사용할 수 있다.즉, ‘인덱스를 정상적으로 사용한다’ 라는 개념은 리프 블록에서 ‘시작점’ 을 찾아 순차 스캔하며 결과를 찾는 것이다.이것은 결국 B-Tree의 그래프에서 리프 노드를 먼저 찾은 뒤, 인덱스 시작점부터 리프 블록의 일부분만 스캔하는 Range Scan을 의미한다.이는 일반적인 DB의 인덱스 구현은 B+Tree를 기반으로 하므로, 리프 노드에서 시작해 오른쪽 리프 노드로 자연스럽게 넘어가는 범위 탐..
인덱스 구조 및 탐색 : 수직적 탐색 과정과 LMC(친절한 SQL 튜닝) 인덱스 구조 및 탐색 DBMS가 발명된지 수 십년이 지났지만, 사실상 현존하는 SQL의 테이블 스캔 방법은 두 가지다. 1. 테이블 전체를 스캔(Full Scan)2. 인덱스를 사용(Random Access) 이 두 가지 과정에서 당연하게도 인덱스를 사용하는 것이 실제 튜닝을 통해 성능을 개선할 요소가 많다.FS 자체는 그다지 (물리적으로 개선하는 것이 아니라면) 의미가 없을 것이다. 인덱스 튜닝의 핵심 요소 1.  인덱스 스캔 과정에서 발생하는 비효율을 줄이기 (인덱스 스캔 효율 튜닝) 소량 데이터 검색 시에는 인덱스 자체의 튜닝을 줄이는 것이 중요하다.  예시에서는 복합 인덱스의 순서처럼, 중복도가 낮은 순서대로 정렬하는 것의 예시를 들었다.이 경우 테이블 내에서 전체 스캔해야 할 내용은 적어지며, ..
19951 - 태상이의 훈련소 생활[G5] 문제 https://www.acmicpc.net/problem/19951  2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다.연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 b번 칸까지 높이 k만큼 흙을 덮거나 파내라고 지시한다. 흙은 주변 산에서 얼마든지 구할 수 있으므로 절대로 부족하지 않다...
2193 - 이친수[S3] 문제https://www.acmicpc.net/problem/2193 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다.이친수는 0으로 시작하지 않는다.이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다.예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다.N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오.풀이 풀이 중 일부.직접 그려보면서 느낀 것이지만, 결국 값이 늘어난다는 의..
11501 - 주식[S2] 문제https://www.acmicpc.net/problem/11501 홍준이는 요즘 주식에 빠져있다. 그는 미래를 내다보는 눈이 뛰어나, 날 별로 주가를 예상하고 언제나 그게 맞아떨어진다. 매일 그는 아래 세 가지 중 한 행동을 한다.주식 하나를 산다.원하는 만큼 가지고 있는 주식을 판다.아무것도 안한다.홍준이는 미래를 예상하는 뛰어난 안목을 가졌지만, 어떻게 해야 자신이 최대 이익을 얻을 수 있는지 모른다. 따라서 당신에게 날 별로 주식의 가격을 알려주었을 때, 최대 이익이 얼마나 되는지 계산을 해달라고 부탁했다.예를 들어 날 수가 3일이고 날 별로 주가가 10, 7, 6일 때, 주가가 계속 감소하므로 최대 이익은 0이 된다. 그러나 만약 날 별로 주가가 3, 5, 9일 때는 처음 두 날에 주식을 하..