행렬의 기초와 연산

행렬은 수학에서 자주 사용되는 구조로, 정사각형 또는 직사각형 형태의 숫자 배열입니다. 예를 들어 다음은 4행 4열의 행렬입니다: 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 행렬은 세 가지 핵심 요소를 포함합니다: 행의 개수(길이), 열의 개수(너비), 그리고 각 위치에 저장된 값들입니다. 일반적으로 이러한 값들은 2차원 배열로 관리됩니다. 행렬 구조 정의 프로그래밍 상에 ...

6월 1일 10:48에 게시됨

트래킹 세그먼트 (이분 탐색, 구간 누적합)

문제 설명 n개의 0으로 초기화된 배열 a가 주어집니다. 또한 m개의 구간이 주어지며, 각 구간은 l_i와 r_i(1 ≤ l_i ≤ r_i ≤ n)로 정의됩니다. 이는 배열 a의 부분 배열 a[l_i], a[l_i+1], ..., a[r_i]를 의미합니다. 특정 구간에서 1의 개수가 0의 개수보다 크다면 해당 구간을 아름다운 구간이라고 합니다. 예를 들어, a = [1, 0, 1, 0, 1]인 경우 구간 [1, 5]는 1이 3 ...

5월 31일 13:04에 게시됨

9월 6일 알고리즘 대회 풀이

$$100 + 90 + 65 + 0 = 255$$점, 학내 $$rk7$$. 링크 T1 분류: 가볍게 풀 수 있는 문제 (노란색 난이도) 문제의 핵심은 반전 연산의 특성이다. 두 위치가 서로 다르다면, 그 중 하나만 바꾸는 것이 아니라, 인접한 두 위치가 서로 순서가 잘못되어 있을 때에만 동시에 교환하는 것이 최적임을 알 수 있다. 따라서 단순한 그리디 시뮬레이션으로 해결 가능하며, 시간 복잡도 ...

5월 29일 13:16에 게시됨

문제 해결을 위한 알고리즘 접근

A 문제 링크 연속된 두 개의 '달콤한' 요소가 있으면 나머지 요소들을 모두 먹을 수 없습니다. 코드 보기 #include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; string dishes[105]; for (int i = 0; i < n; ++i) { cin >> dishes[i]; if (i > 0 && ...

5월 28일 19:00에 게시됨

NOIP 13연속 모의고사 #2 풀이

A번: 역순 배열직접 패턴을 분석해보면 규칙을 발견할 수 있다. 인덱스가 홀수번째끼리, 짝수번째끼리 서로 인접하며, 전체 배열은 홀수/짝수 인덱스 그룹이 번아 등장하는 형태가 된다.구체적으로 다음과 같이 구성된다:n이 홀수: aₙ, aₙ₋₂, ... , a₁ 뒤에 a₂, a₄, ... , aₙ₋₁n이 짝수: aₙ, aₙ₋₂, ... , a₂ 뒤에 a₁, a₃, ... , aₙ₋₁시간 복잡도는 O(n)이다.#include <b ...

5월 28일 16:51에 게시됨

이진 탐색 알고리즘과 파이썬을 활용한 다양한 응용

이진 탐색의 기본 원리 이진 탐색(Binary Search)은 정렬된 배열에서 특정 값을 효율적으로 찾는 대표적인 알고리즘입니다. 탐색 과정은 배열의 중앙 요소부터 시작하며, 이 값이 목표값과 일치하면 탐색을 종료합니다. 만약 목표값이 중앙값보다 크다면 오른쪽 반쪽에서, 작다면 왼쪽 반쪽에서 계속 탐색을 진행합니다. 이 방식은 매번 탐색 범위를 절반으로 줄이기 때문 ...

5월 27일 22:24에 게시됨

소수점 버림 조건을 만족하는 쌍 계산 및 비트 연산자 배열 최적화

문제 A: 조건부 쌍 카운팅 분수 i/j의 소수부가 0.5 미만이 되도록 하는 (i, j) 쌍의 개수를 구하는 문제입니다. 수학적으로 변형하면: i/j - ⌊i/j⌋ < 0.5 양변에 j를 곱하면 i - ⌊i/j⌋·j < 0.5j가 됩니다. 여기서 왼쪽 항은 나머지 연산 i % j와 동일하므로, 최종 조건은 i % j < 0.5j로 단순화됩니다. 구간 패턴 분석 고정된 j에 대해 i가 0부터 n까지 변 ...

5월 27일 21:09에 게시됨

C++ 표준 라이브러리 알고리즘 완전 정리

비수정형 시퀀스 알고리즘 이들 알고리즘은 컨테이너의 요소를 변경하지 않고 탐색 또는 검사를 수행합니다. 요소 탐색: find 계열 함수 find(시작, 끝, 값): 지정된 값과 일치하는 첫 번째 요소의 반복자를 반환. 못 찾으면 end(). find_if(시작, 끝, 조건): 조건을 만족하는 첫 번째 요소를 찾음. find_end(시작1, 끝1, 시작2, 끝2): 두 번째 범위의 시퀀스가 첫 ...

5월 26일 16:42에 게시됨

문자열 처리 알고리즘: 역순 및 변환 기법

문자열 역순 처리 알고리즘 문자열을 효율적으로 역순으로 처리하는 기본 알고리즘은 두 개의 포인터를 사용하여 문자열의 양쪽 끝에서 중앙으로 이동하며 요소를 교환하는 방식입니다. 이 방법은 공간 복잡도 O(1)로 문자열을 역순으로 만들 수 있어 매우 효율적입니다. 문제 1: 문자열 전체 역순 이 문제에서는 문자 배열을 입력으로 받아 해당 배열의 내용을 역순으로 ...

5월 25일 22:27에 게시됨

파이썬 알고리즘 및 자료구조 기초 문제 풀이

시간 복잡도 비교 문제 AList = [1, 2, 3], BSet = {1, 2, 3}일 때 다음 질문에 답하시오: 값 4를 찾을 때, 리스트와 집합 중 어느 쪽의 최악 시간 복잡도가 더 큰가? 값 4를 삽입할 때, 리스트와 집합 중 어느 쪽의 최악 시간 복잡도가 더 큰가? 답변: 검색 연산의 경우, 리스트와 집합 모두 O(n)의 시간 복잡도를 가진다. 삽입 연산의 경우, 리스트는 O(n), 집합은 평 ...

5월 25일 12:42에 게시됨