All tags
Posts tagged "ps"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 백준 25402번 트리와 쿼리백준 25402번 트리와 쿼리 풀이. 쿼리마다 선택된 노드끼리만 유니온하며 연결된 컴포넌트 크기로 가능한 쌍의 수를 계산한다.
-
-
-
-
-
-
- 백준 24525번 SKK 문자열백준 24525번 SKK 문자열 풀이. S와 K를 가중치로 바꾼 prefix sum에서 같은 값을 갖는 가장 먼 구간을 찾아 조건 문자열 길이를 구한다.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 백준 24527번 이상한 나라의 갈톤보드백준 24527번 이상한 나라의 갈톤보드 풀이. 구간 업데이트를 lazy segment tree와 imos 방식으로 각각 풀며 도착 구간 계산을 정리한다.
-
-
-
-
- 백준 16637번 괄호 추가하기백준 16637번 괄호 추가하기 풀이. 괄호가 겹치지 않는 모든 배치를 재귀로 만들고, 생성된 식을 앞에서부터 계산한다.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 백준 11657번 타임머신백준 11657번 타임머신 풀이. 음의 간선이 있는 그래프에서 벨만 포드 알고리즘으로 최단거리와 음수 사이클을 판정한다.
- 백준 1219번 오민식의 고민백준 1219번 오민식의 고민 풀이. 수익을 반영한 벨만 포드와 사이클 전파로 도착지에서 무한히 돈을 벌 수 있는지 판정한다.
- 백준 1738번 골목길백준 1738번 골목길 풀이. 목적지까지 이어지는 양의 사이클만 걸러내도록 벨만 포드 변형과 경로 복원을 함께 사용한다.
-
-
-
-
-
-
- 백준 17435번 합성함수와 쿼리백준 17435번 합성함수와 쿼리 풀이. f의 1, 2, 4, 8회 적용 결과를 sparse table로 저장해 합성함수 값을 로그 시간에 구한다.
-
- 백준 2248번 이진수 찾기백준 2248번 이진수 찾기 풀이. 자릿수와 1의 개수 제한별 경우의 수를 DP로 세고, prefix count로 I번째 수를 구성한다.
-
- 백준 17131번 여우가 정보섬에 올라온 이유백준 17131번 여우가 정보섬에 올라온 이유 풀이. 좌우 스위핑으로 각 별보다 높은 별의 개수를 구하고 곱해 별자리 경우를 계산한다.
- 백준 13925번 수열과 쿼리 13백준 13925번 수열과 쿼리 13 풀이. 더하기, 곱하기, 대입 쿼리를 ax+b 형태의 lazy 값으로 합성해 처리한다.
- 백준 5419번 북서풍백준 5419번 북서풍 풀이. 좌표 압축과 세그먼트 트리를 이용해 정렬된 순서에서 조건을 만족하는 점 쌍의 수를 센다.
- 백준 13537번 수열과 쿼리 1백준 13537번 수열과 쿼리 1 풀이. 머지 소트 트리의 정렬된 구간 벡터에서 upper_bound로 K보다 큰 원소 개수를 구한다.
- 백준 7469번 K번째 수백준 7469번 K번째 수 풀이. 머지 소트 트리로 구간 내 특정 값 이하의 개수를 구하고 이분 탐색으로 K번째 수를 찾는다.
-
- 백준 10999번 구간 합 구하기 2백준 10999번 구간 합 구하기 2 풀이. Lazy propagation으로 구간 업데이트를 미뤄 두고 필요한 순간에 합을 반영한다.
- 백준 12844번 XOR백준 12844번 XOR 풀이. XOR의 결합법칙과 교환법칙을 이용해 구간 XOR 쿼리와 lazy XOR 업데이트를 처리한다.
- 백준 5676번 음주 코딩백준 5676번 음주 코딩 풀이. 수를 양수, 음수, 0으로만 변환해 구간 곱의 부호를 세그먼트 트리로 빠르게 판단한다.
- 백준 1572번 중앙값백준 1572번 중앙값 풀이. 값 범위에 대한 세그먼트 트리를 만들고 슬라이딩 윈도우의 K번째 값을 찾아 중앙값 합을 구한다.
- 백준 2104번 부분배열 고르기백준 2104번 부분배열 고르기 풀이. 구간 최솟값의 인덱스를 기준으로 분할 정복하며 부분배열 합과 최솟값의 곱을 최대화한다.
- 백준 2517번 달리기백준 2517번 달리기 풀이. 실력을 좌표 압축한 뒤 세그먼트 트리로 앞선 선수 중 자신보다 강한 사람 수를 계산한다.
-
- 백준 2243번 사탕상자백준 2243번 사탕상자 풀이. 맛별 사탕 개수 합을 세그먼트 트리에 저장하고, 순위 기반 탐색으로 원하는 사탕 맛을 찾는다.
- 백준 9345번 디지털 비디오 디스크(DVDs)백준 9345번 디지털 비디오 디스크 풀이. 구간의 최솟값과 최댓값을 세그먼트 트리에 저장해 해당 범위의 DVD가 모두 있는지 확인한다.
- 백준 3653번 영화 수집백준 3653번 영화 수집 풀이. DVD 위치를 넉넉한 인덱스 영역에 배치하고 세그먼트 트리로 위에 쌓인 DVD 개수를 센다.
- 백준 1280번 나무 심기백준 1280번 나무 심기 풀이. 왼쪽과 오른쪽 나무의 개수와 거리 합을 세그먼트 트리에 저장해 새 나무의 비용을 계산한다.
- 백준 3006번 터보소트백준 3006번 터보소트 풀이. 세그먼트 트리로 남아 있는 원소 수를 세며 1, N, 2, N-1 순서의 이동 횟수를 계산한다.
- 백준 1517번 버블 소트백준 1517번 버블 소트 풀이. 실제 버블 정렬 대신 세그먼트 트리로 아직 정렬되지 않은 앞쪽 원소 수를 세어 swap 횟수를 구한다.
- 백준 6549번 히스토그램에서 가장 큰 직사각형백준 6549번 히스토그램에서 가장 큰 직사각형 풀이. 최소 높이 막대를 기준으로 구간을 나누고 세그먼트 트리로 최솟값 인덱스를 찾는다.
- 백준 11505번 구간 곱 구하기백준 11505번 구간 곱 구하기 풀이. 세그먼트 트리에 구간 곱을 저장하고 업데이트 시 리프부터 부모 노드까지 값을 다시 계산한다.
- 백준 12837번 가계부 (Hard)백준 12837번 가계부 (Hard) 풀이. 값 변경이 아니라 누적 추가가 일어나는 구간 합 질의를 세그먼트 트리로 처리한다.
- 백준 2357번 최솟값과 최댓값백준 2357번 최솟값과 최댓값 풀이. 구간 최솟값 트리와 최댓값 트리를 각각 만들어 RMQ 질의에 답한다.
-
- 백준 17398번 통신망 분할백준 17398번 통신망 분할 풀이. 제거되지 않는 간선을 먼저 합치고, 끊은 간선을 역순으로 복구하며 분할 비용을 누적한다.
- 백준 2042번 구간 합 구하기백준 2042번 구간 합 구하기 풀이. 세그먼트 트리로 구간 합 질의와 단일 값 업데이트를 모두 O(log N)에 처리한다.
- 백준 9938번 방 청소백준 9938번 방 청소 풀이. 연결된 서랍 집합의 남은 공간 수를 루트에 저장해 각 술병을 보관할 수 있는지 빠르게 판단한다.
- 백준 11085번 군사 이동백준 11085번 군사 이동 풀이. 간선을 수용량 내림차순으로 연결하며 출발지와 도착지가 이어지는 순간의 최소 수용량을 찾는다.
- 백준 14868번 문명백준 14868번 문명 풀이. BFS로 문명을 확장하고 인접한 문명을 유니온 파인드로 합치며 모두 연결되는 해를 찾는다.
- 백준 3197번 백조의 호수백준 3197번 백조의 호수 풀이. 물 확산을 BFS로 진행하고 녹아 연결된 영역을 유니온 파인드로 묶어 백조가 만나는 날을 구한다.
- 백준 14003번 가장 긴 증가하는 부분 수열 5백준 14003번 가장 긴 증가하는 부분 수열 5 풀이. O(N log N) LIS 과정에서 이전 값을 추적해 실제 증가 부분 수열을 복원한다.
-
-
- 백준 2162번 선분 그룹백준 2162번 선분 그룹 풀이. 선분 교차 판정과 유니온 파인드를 결합해 그룹 개수와 가장 큰 그룹 크기를 계산한다.
-
-
-
- 백준 11049번 행렬 곱셈 순서백준 11049번 행렬 곱셈 순서 풀이. 시작과 끝 행렬 범위를 상태로 두고 분할 지점별 곱셈 비용의 최솟값을 메모이제이션한다.
-
- 백준 14464번 소가 길을 건너간 이유 4백준 14464번 소가 길을 건너간 이유 4 풀이. 닭이 도와줄 수 있는 소 중 종료 시간이 가장 빠른 소를 고르는 그리디 매칭을 설명한다.
- 백준 16562번 친구비백준 16562번 친구비 풀이. 친구 관계를 유니온 파인드로 묶고 각 집합의 최소 친구비를 합산해 예산 가능 여부를 판단한다.
- 백준 1717번 집합의 표현백준 1717번 집합의 표현 풀이. 경로 압축을 사용하는 유니온 파인드의 union과 find 연산을 구현해 집합 포함 여부를 판정한다.
- 백준 4195번 친구 네트워크백준 4195번 친구 네트워크 풀이. 이름을 인덱스로 매핑하고 루트에 집합 크기를 저장하는 유니온 파인드로 네트워크 크기를 출력한다.
- 백준 1715번 카드 정렬하기백준 1715번 카드 정렬하기 풀이. 가장 작은 카드 묶음 두 개를 반복해서 합치는 최소 힙 기반 그리디 전략을 정리한다.
- 백준 2014번 소수의 곱백준 2014번 소수의 곱 풀이. 최소 힙에서 작은 곱을 꺼내 다시 소수들과 곱하며 중복과 오버플로우를 관리한다.
- 백준 2696번 중앙값 구하기백준 2696번 중앙값 구하기 풀이. 최대 힙과 최소 힙의 균형을 유지해 입력이 들어올 때마다 중앙값을 출력한다.
- 백준 10649번 프리스비백준 10649번 프리스비 풀이. 선택된 소 집합의 안정도를 비트마스크 DP로 저장하고, 소를 위나 아래에 놓는 경우를 비교한다.
- 백준 1176번 섞기백준 1176번 섞기 풀이. 마지막으로 세운 학생과 지금까지 세운 학생 집합을 상태로 두어 조건을 만족하는 순서의 수를 센다.
- 백준 1029번 그림 교환백준 1029번 그림 교환 풀이. 현재 소유자, 구매 가격, 방문한 예술가 집합을 상태로 두어 가능한 최대 거래 인원 수를 구한다.
- 백준 1480번 보석 모으기백준 1480번 보석 모으기 풀이. 가방 번호, 현재 가방 무게, 담은 보석 집합을 상태로 관리해 담을 수 있는 보석 수의 최댓값을 찾는다.
- 백준 16991번 외판원 순회 3백준 16991번 외판원 순회 3 풀이. 좌표 사이의 유클리드 거리를 비용으로 사용해 비트마스크 TSP를 적용한다.
- 백준 2320번 끝말잇기백준 2320번 끝말잇기 풀이. 마지막 문자와 사용한 단어 집합을 상태로 두고 얻을 수 있는 최고 점수를 메모이제이션한다.
- 백준 1102번 발전소백준 1102번 발전소 풀이. 켜진 발전소 상태를 비트마스크로 표현하고, 목표 개수 이상을 켜는 최소 추가 비용을 탐색한다.
- 백준 3056번 007백준 3056번 007 풀이. 미션 할당 여부를 비트마스크로 두고 각 요원에게 미션을 배정하는 최대 성공 확률을 DP로 계산한다.
-
- 백준 2098번 외판원 순회백준 2098번 외판원 순회 풀이. 현재 도시와 방문 도시 비트마스크를 상태로 두고 모든 도시를 방문하는 최소 비용을 메모이제이션한다.
-
-
- 백준 9328번 열쇠백준 9328번 열쇠 풀이. 열쇠 보유 상태가 바뀌면 이전에 막혔던 위치도 다시 탐색할 수 있게 처리해 문서 개수를 센다.
- 백준 1194번 달이 차오른다, 가자.백준 1194번 달이 차오른다, 가자 풀이. 열쇠 보유 상태를 비트마스크로 기록해 같은 위치라도 다른 열쇠 상태면 다시 탐색한다.
- 백준 2001번 보석 줍기백준 2001번 보석 줍기 풀이. 보유 보석 집합을 비트마스크로 관리하며 같은 섬과 같은 보석 상태의 중복 방문을 막는다.
- 백준 12094번 2048 (Hard)백준 12094번 2048 (Hard) 풀이. 보드를 회전해 한 방향 이동만 구현하고, 변화 없는 이동과 도달 불가능한 최댓값을 가지치기한다.
- 백준 1562번 계단 수백준 1562번 계단 수 풀이. 길이, 마지막 숫자, 사용한 숫자 비트마스크를 상태로 두어 모든 숫자를 포함하는 계단 수를 센다.
- 백준 1799번 비숍백준 1799번 비숍 풀이. 대각선 점유 여부를 이용하고 흑백 칸을 분리해 탐색량을 줄이는 백트래킹 전략을 정리한다.
- 백준 2263번 트리의 순회백준 2263번 트리의 순회 풀이. inorder와 postorder의 인덱스 범위만 넘기며 루트와 서브트리 크기를 찾아 preorder를 출력한다.
- 백준 17136번 색종이 붙이기백준 17136번 색종이 붙이기 풀이. 붙일 수 있는 색종이 크기와 남은 장수를 확인하며 되돌리기 가능한 백트래킹으로 최소 장수를 구한다.
- 백준 1182번 부분수열의 합백준 1182번 부분수열의 합 풀이. 각 원소를 선택하거나 선택하지 않는 모든 경우를 백트래킹으로 탐색해 목표 합의 개수를 센다.
- 백준 1759번 암호 만들기백준 1759번 암호 만들기 풀이. 알파벳 선택 여부를 백트래킹하며 모음 1개 이상, 자음 2개 이상 조건을 만족하는 암호를 출력한다.
- 백준 1987번 알파벳백준 1987번 알파벳 풀이. 지금까지 사용한 알파벳을 기록하면서 상하좌우로 이동 가능한 경로의 최대 길이를 DFS로 찾는다.
-
- 백준 2580번 스도쿠백준 2580번 스도쿠 풀이. 행, 열, 3x3 박스의 사용 숫자를 기록하고 빈 칸을 백트래킹으로 채워 유효한 보드를 찾는다.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 백준 1629번 곱셈백준 1629번 곱셈 풀이. 거듭제곱을 반으로 나눠 재사용하는 분할 정복과 모듈러 연산으로 O(log N)에 값을 계산한다.
-
-
- 백준 1107번 리모컨백준 1107번 리모컨 풀이. 만들 수 있는 채널을 완전 탐색하고, 숫자 버튼 입력 횟수와 +/- 이동 횟수의 최솟값을 비교한다.
-
-
-
- 백준 9663번 N-Queen백준 9663번 N-Queen 풀이. 1차원 배열로 퀸의 위치를 표현하고 열과 대각선 충돌을 검사하는 백트래킹 방법을 설명한다.
- 백준 15649번 N과 M백준 N과 M 시리즈 풀이. 방문 여부, 오름차순 조건, 중복 제거 조건을 조합해 여러 백트래킹 문제를 한 흐름으로 정리한다.
-
- 백준 1074번 Z백준 1074번 Z 풀이. 전체 배열을 실제로 만들지 않고, 목표 좌표가 속한 사분면만 따라가며 방문 순서를 누적한다.
-
-
-
-
-
- 백준 11279번 최대 힙백준 11279번 최대 힙 풀이. Python의 최소 힙에 음수 값을 넣어 최대 힙처럼 동작하게 만드는 구현 방법을 정리한다.
-
- 백준 1018번 체스판 다시 칠하기백준 1018번 체스판 다시 칠하기 풀이. 가능한 8x8 영역을 모두 확인하고 시작 색에 따른 칠해야 할 칸 수의 최솟값을 구한다.
-
- 백준 12015번 가장 긴 증가하는 부분 수열 2백준 12015번 가장 긴 증가하는 부분 수열 2 풀이. 길이별 최소 끝값을 유지하고 이분 탐색으로 O(N log N)에 LIS 길이를 구한다.
-
-
-
-
-
-
- 백준 2630번 색종이 만들기백준 2630번 색종이 만들기 풀이. 종이를 네 조각으로 재귀 분할하며 한 색으로만 이루어진 영역의 개수를 센다.
- 백준 1992번 쿼드트리백준 1992번 쿼드트리 풀이. 이미지를 네 영역으로 나누고 같은 값으로 압축 가능한지 확인하는 재귀 분할 방식을 설명한다.
-
-
-
-
-
-