본문 바로가기

전체 글359

Gosper's Hack Algorithm n개의 원소 중 k개를 선택하는 모든 조합을 순회해야 할 때, 대부분은 itertools.combinations나 재귀 함수를 떠올릴 것입니다. 하지만 비트마스크를 사용해야 하는 상황이라면 Gosper's Hack을 사용할 수 있습니다.1. 서론발견 계기https://www.acmicpc.net/problem/17127이 알고리즘을 처음 찾게 된 건 "n개를 여러 그룹으로 나누는 모든 경우"를 순회해야 할 때였습니다. n개의 원소를 4개 그룹으로 나눈다면, n-1개의 틈 중 3개를 고르는 문제이고 3중 for문으로 충분합니다.하지만 그룹 수가 가변이거나 많아지면 어떨까요? k중 for문은 비현실적입니다. 점화식으로 "다음 경우"를 구하려 했는데, 조건문과 반복문이 걸렸습니다. 순수 비트 연산만으로 다음 .. 2025. 12. 5.
정사각형 암호 해독: 90도 회전 변환의 원리와 구현 https://www.acmicpc.net/problem/5426문제 개요정사각형 암호(Square Cipher)는 평문을 정사각형 격자에 배치한 후 90도 회전시켜 암호문을 만드는 방식입니다. 이 글에서는 암호문을 복호화하는 과정을 다룹니다.예제:입력: RSTEEOTCP출력: TOPSECRET핵심 원리1. 변환 과정 시각화길이 9인 문자열 "TOPSECRET"을 3×3 격자로 배치:0 1 2 T O P3 4 5 = S E C6 7 8 R E T90도 시계방향 회전 후:R S TE E OT C P1차원으로 읽기: "RSTEEOTCP"2. 수학적 공식 (0-based 인덱싱)2차원 위치를 1차원 인덱스로 표현할 수 있습니다. 나이브한 방법은 "1차원 → 2차원 → 회전 → 1차원" 순서로.. 2025. 11. 16.
평면에 직선 𝑛개를 그을 때 만들 수 있는 최대 영역 수 평면에 직선 $n$개를 그을 때 만들어지는 최대 영역 수를 하노이의 탑과 같은 흐름으로 정리한다. 핵심은 증가량이 등차수열 $(1,2,3,\dots)$이어서 삼각수가 자연스럽게 등장한다는 점이다.1) 문제와 가정(일반 위치)평면에 서로 다른 직선 $n$개.일반 위치(general position) 가정평행 없음(아무 두 직선도 평행하지 않음)세 직선 이상이 한 점에서 만나지 않음목표: 만들어지는 영역(면)의 최대 개수 $L_n$.2) 분해와 점화식직선을 하나씩 추가한다고 보면, 새 직선은 이전 $n-1$개의 직선을 서로 다른 $n-1$개의 점에서 만나고, 그 결과 $n$개의 구간으로 잘린다. 각 구간은 기존의 한 영역을 둘로 갈라 영역 수가 1씩 증가한다.$$\boxed{L_n = L_{n-1} + n,.. 2025. 11. 13.
Concrete Mathatics-Recurrent Problems: Tower of Hanoi 하노이의 탑: 점화식 → 닫힌형 → 최소성(엄밀) → 이동 규칙 공식화 → 구현분해 논리로 점화식을 세우고, 닫힌형을 두 방식으로 유도하고, 최소성을 강한 귀납으로 엄밀히 확정한다. 이어서 어느 디스크가 언제 움직이는가를 $v_2$ 가측과 “ruler function”으로 공식화하고, 재귀·반복 구현까지 연결한다.1) 문제와 불변식세 기둥 $A,B,C$, 크기 다른 $n$개의 원반.제약한 번에 한 원반만 이동.큰 원반은 작은 원반 위에 올 수 없음.목표: 모든 원반을 $A\to C$로 최소 이동으로 옮기기.불변식초기 상태에서 성립하는 제약 1–2는 모든 이동 후에도 유지되어야 한다.기저 $n=0$이면 이동 0회.2) 분해와 점화식가장 큰 원반을 움직이려면 그 위의 $n-1$개를 보조 기둥으로 치워야 한다.. 2025. 11. 6.
백준34510_초콜릿 우유가 좋아.py https://www.acmicpc.net/problem/34510꼭지 높이=a삼각형 높이=b사각형 높이=c1층=a+b+c2층=b+c*23층=a+b*2+c*34층= b*2+c*45층= a+b*3+c*56층= b*3+c*6n층=a*(n&1)+ b*(n&1)+b*(n//2)+c*n =(a+b)* (n&1)+ b*(n//2) +c*ndef s(): a,b,c,n=map(int,open(0).read().split()) print((a+b)*(n&1)+b*(n>>1)+c*n)s() 2025. 10. 27.
푸른 낙동강-박다은 강에 있는 다리를 건너요.또르륵 비가 와요.캄캄한 그림자 밑에여우 발자국이 있어요.물 웅덩이가 생겨요.강에는 오리가 있어요. 2025. 10. 18.
백준 32162번: n, 3n, 5n 문제 요약서로 다른 양의 정수로 구성된 증가 수열 중, 다음 조건을 만족하는 사전순으로 최소인 수열을 찾는 문제입니다:임의의 양의 정수 n에 대해, n, 3n, 5n 중 정확히 하나만 수열에 등장한다.입력: 테스트 케이스 T개, 각각 인덱스 i (1 ≤ i ≤ 100,000)출력: 각 i번째 수열 원소 ai"사전순 최소"란?두 수열을 앞에서부터 비교할 때, 처음으로 다른 위치에서 더 작은 값을 가진 수열이 사전순으로 앞섭니다.수열 A: [1, 2, 4, ...]수열 B: [1, 2, 5, ...]→ 3번째 위치에서 4 즉, 가능한 한 작은 수부터 그리디하게 선택하되, 조건을 만족해야 합니다.수열 생성 예시1부터 차례로 확인하며 선택 가능 여부를 판단:1 선택 → n=1일 때 {1, 3, 5} 중 1 선택.. 2025. 10. 11.
Python `pow()` 3항 형태와 모듈러 거듭제곱 최적화 모듈러 거듭제곱이란?기본 개념모듈러 거듭제곱은 큰 지수 계산 결과를 특정 수로 나눈 나머지를 구하는 연산입니다.(a^b) mod m예를 들어, 2^10 mod 1000을 계산하려면:일반적 방법: 2^10 = 1024 → 1024 % 1000 = 24Python: pow(2, 10, 1000) → 24왜 필요한가?큰 지수를 계산할 때 문제가 발생합니다:# ❌ 이렇게 하면 안 됩니다result = (2 ** 1000000) % 1000000007 # 메모리 폭발!# ✅ 올바른 방법result = pow(2, 1000000, 1000000007) # 빠르고 안전pow(a, b, m)의 동작 원리정의pow(a, b, m) # (a^b) mod m을 반환제약 조건:a, b, m은 모두 정수m ≠ 0b 일 때.. 2025. 10. 3.
다익스트라 알고리즘 (Dijkstra’s Algorithm)-복습 1. 개요다익스트라 알고리즘은 그래프 최단 경로 문제를 해결하는 대표적인 알고리즘입니다. 가중치가 모두 0 이상인 방향 그래프 혹은 무방향 그래프에서, 하나의 시작 정점에서 다른 모든 정점까지의 최단 거리를 구할 수 있습니다.2. 핵심 아이디어탐욕적(Greedy) 방식으로 접근합니다.시작점에서 가장 가까운 정점을 하나씩 확정해 나갑니다.확정된 정점을 통해 다른 정점까지의 거리를 갱신합니다.3. 알고리즘 절차시작 정점의 거리를 0, 나머지는 무한대(∞)로 초기화합니다.아직 방문하지 않은 정점 중 최단 거리가 가장 짧은 정점을 선택합니다.그 정점에서 갈 수 있는 인접 정점들의 거리를 갱신합니다.모든 정점을 처리할 때까지 2~3 과정을 반복합니다.4. 파이썬 구현 예시import heapqdef dijkstr.. 2025. 9. 22.
군론(Group Theory) 개요군론은 “대칭”을 수학적으로 다루는 도구다. 핵심은 한 집합과 그 위의 이항연산이 네 가지 조건(닫힘, 결합법칙, 항등원, 역원)을 만족하는지 확인하는 것.1. 필요한 배경지식기초 수학: 집합, 함수, 나눗셈, 소수, 최대공약수.논리: 증명 구조(가정 → 전개 → 결론).선택: 선형대수(행렬, 벡터공간). 표현론 입문 시 유리.2. 학습 순서와 핵심 개념2.1 군(Group)의 정의집합 $G$와 이항연산 $:G\times G\to G$가 다음을 만족하면 $(G,)$는 군.닫힘: $\forall a,b\in G,\ a*b\in G$결합법칙: $(ab)*c=a(b*c)$항등원: $\exists e\in G,\ \forall a,\ ea=ae=a$역원: $\forall a,\ \exists a^{-1},\.. 2025. 9. 21.
번사이드 보조정리 (Burnside's Lemma) 1. 번사이드 보조정리란?대칭이 있는 조합 문제에서 중복을 제거한 실제 경우의 수를 구하는 방법.이름의 유래1845 코시 최초 발견1887 프로베니우스 독립 재발견1897 번사이드 저서에서 인용 → 널리 알려짐정확히는 코시–프로베니우스 보조정리로도 불림.언제 쓰나? “회전해서 같은 것”, “뒤집어서 같은 것”을 하나로 세라고 할 때.왜 단순 나누기는 틀리나? 각 대칭변환마다 고정되는 경우의 수가 다르기 때문.2. 공식과 의미공식서로 다른 경우의 수 = (1/|G|) · Σ_{g∈G} |Fix(g)|G: 대칭변환 집합, |G|: 개수Fix(g): 변환 g에 불변인 배치들의 집합의미: 변환별 고정 배치 수를 모두 더해 평균낸다.3. 해결 3단계대칭변환 나열각 변환의 고정점 개수 계산평균(전체/|G|) 계산4.. 2025. 9. 19.
1 am Dawn 12년 전에 FL로 만들었던 사운드를 SUNO에 넣어 곡을 만들어 보았습니다.https://soundcloud.com/hanzch/201326-1?si=8604213742ff47f79e530cd2591237ab&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing 201326Listen to 201326 by hanzch #np on #SoundCloudsoundcloud.comhttps://suno.com/s/6iubnL85zFJwmOgMVerse 1흔들리는 불꽃벽지를 물들여유리에 스친 빗물이펼친 노트를 달리는펜 끝에서 번져온어지러운 얼룩Chorus째깍이는 초침날카로인 불빛늘어진 그림자바닥을 기어와나를 흔들어 깨우며스며드는 고요째깍이는 초침.. 2025. 9. 18.
최소 스패닝 트리 (Minimum Spanning Tree) 학습 로드맵사전 지식├── 그래프 이론 기초│ ├── 그래프 표현 (인접 리스트, 인접 행렬)│ ├── 그래프 순회 (DFS, BFS)│ └── 가중 그래프├── 자료구조│ ├── 우선순위 큐 (힙)│ └── Union-Find (분리집합)└── 알고리즘 분석 ├── 시간 복잡도 └── 공간 복잡도최소 스패닝 트리 (MST)├── 정의와 성질├── 대표 알고리즘│ ├── 크루스칼 (Kruskal)│ └── 프림 (Prim)├── 구현과 최적화└── 응용 사례후속 학습├── 최단 경로 알고리즘 (다익스트라, 벨만-포드)├── 네트워크 플로우 (최대/최소 비용 플로우)└── 고급 그래프 알고리즘 (강연결 성분, 최소 컷)1. 최소 스패닝 트리란?스패닝 트리: 연결된 무방향.. 2025. 9. 17.
나노 바나나 테스트 결과 특징 / 장점피사체 자세·외형 일관성 유지원본 이미지의 인물/피사체 외형 (얼굴/신체 비율/자세 등)을 스타일만 바꿔도 비교적 잘 유지됨.속도생성 + 편집 속도가 빠름. 일반 생성은 약 10~30초, 간단 편집은 ~12초 내외로 보고됨.강한 편집 기능배경 교체, 흐릿한 사진 선명화, 얼굴 복원, 이미지 합성 등이 가능함.한국어 명령어 처리 능력한국어 프롬프트 잘 이해함. 유행어/은어 포함해서 비교적 자연스럽게 반응한다는 평가 있음.소묘 스케치만 가지고 재질이 가죽인지 일반 스웨터인지 앙고라인지 데님인지 안다. 주름이 잡히는 모양 등을 고려하는 듯단점 / 한계이미지 생성 실패 가능성입력 시 이미지 선택해 놓고 “생성할 수 없다”거나 결과 안 나오는 경우 있음.과거 결과 반복 / 새로운 프롬프트 반영 부족새.. 2025. 9. 15.
2D BIT (Binary Indexed Tree): 백준 11658번 \ 2차원 펜윅 트리 https://www.acmicpc.net/problem/11658 시작하며2D BIT는 2차원 배열에서 점 업데이트(Point Update)와 구간 합 쿼리(Range Sum Query)를 효율적으로 처리하는 자료구조이번에 공부한 내용:2D BIT의 핵심 개념과 작동 원리시간복잡도 분석 및 최적화 방법백준 11658번 문제를 통한 실제 적용Python으로 구현하는 방법1. 2D BIT 개념 이해하기1.1 1D BIT 복습부터2D BIT를 이해하려면 먼저 1D BIT의 핵심을 다시 짚어보자.1D BIT에서 인덱스 i의 책임 구간은 i & -i (LSB, Least Significant Bit)로 결정된다는 걸 배웠었다:인덱스 1: 책임 구간 [1, 1] (길이 1)인덱스 2: 책임 구간 [1, 2] (길.. 2025. 9. 13.