식별자 컨벤션 변환 및 비트마스킹 기반 순열 알고리즘 풀이

1. 카멜 케이스와 스네이크 케이스 변환 알고리즘 프로그래밍에서 자주 사용되는 두 가지 명명 규칙인 카멜 케이스(CamelCase)와 스네이크 케이스(snake_case) 간의 변환을 처리하는 문제입니다. 문제의 핵심은 입력받은 문자열이 유효한 형식인지 판단하고, 카멜 케이스인 경우에만 스네이크 케이스로 변환하는 것입니다. 변환 및 판별 규칙 카멜 케이스: 첫 번째 ...

8월 21일 17:25에 게시됨

알고리즘 문제 해결 전략: 비트마스크부터 수론까지

격자 상태 탐색 및 비트마스크 활용 첫 번째 문제는 주어진 격자에서 특정 행과 열을 선택하여 제거했을 때, 남아있는 검은색 셀의 개수가 정확히 K 가 되는 경우의 수를 찾는 문제이다. 행과 열의 개수가 작으므로 비트마스크를 이용하여 모든 조합을 탐색하는 방식이 적합하다. 각 행과 열에 대해 선택 여부를 비트로 표현하여 반복문을 구성한다. 선택된 행이나 열에 포 ...

8월 10일 07:39에 게시됨

알고리즘 디버깅 노트: 실수에서 배우는 최적화

경험을 통해 배운 디버깅 사례들을 정리합니다. 비슷한 실수를 반복하지 않기 위한 기록입니다. 위상 정렬: 인덱스 실수 원본 코드: while (front < rear) { int cur = queue[front++]; for (int idx = adj[cur]; idx; idx = nxt[idx]) { int nxtNode = to[idx]; // 정상 indeg[nxtNode]--; if (indeg[nxtNode] == 0) { ...

6월 25일 21:08에 게시됨

NOIP 모의고사 4회 풀이 노트

문제 1: 대회 참가 조합 각 참가자의 대회 참가 여부를 비트마스크로 인코딩하여 [0, 16) 범위의 정수로 표현한다. 이후 각 상태의 비트 개수(popcount)를 기준으로 내림차순 정렬한 뒤, 그리디 전략으로 조합을 구성한다. 핵심 아이디어는 sum[j]가 양수일 때, 현재 상태 j와 겹치지 않는 참가자를 병합하여 새로운 상태를 형성하는 것이다. 초기값을 충분히 큰 값으로 설 ...

5월 25일 10:19에 게시됨