
크로아티아 알파벳(2941) 문제를 문자열 치환과 인덱스 점프 방식 두 가지로 풀이했다. 각 방법의 알고리즘 흐름, 시간·공간 복잡도, 중첩 처리 이슈, 어려웠던 점을 코드와 이미지 예시로 시각화해 상세히 비교 정리했으며, 배운 팁과 코드 스니펫 활용법까지 담았다.

1316 그룹 단어 체커는 문자열을 순회해 연속 등장은 무시하고, 비연속 중복만 검사해 그룹 단어 개수를 센다. 초기 방식(O(NL²)) 대신 boolean[26] 배열과 prev 변수 활용을 통해BufferedReader+StringBuilder I/O 최적화

BOJ 25206 '너의 평점은?' 문제를 풀이: P등급 제외 과목 학점×평점 가중평균 계산. Switch-case vs Map방식 비교. Map.of와 DecimalFormat 활용해 코드 간결·유지보수성 향상, 6소수점 고정 출력, 입력 라인 고정으로 안정성 확보.

2738번 행렬덧셈. 두 개의 N×M 행렬을 입력받아 같은 위치의 원소끼리 더한 결과를 출력하는 문제. 입력을 2N줄 받아 한 배열에 누적 덧셈 처리하며, BufferedReader로 빠른 입력을 사용해 효율성을 높임.

9×9 배열에서 최댓값과 위치를 한 번의 입력 순회로 찾는 문제를 다뤘다. 최댓값과 좌표 갱신, 1-based 인덱스 변환을 for문으로 구현했다. 인덱스 기준 실수와 for문 이외의 대안 가능성을 고찰한 과정, 최적 복잡도와 실전 팁까지 정리했다.

5줄의 문자열을 입력받아, 세로 방향으로 한 글자씩 읽어 한 줄로 출력하는 문제. 1차원 배열 인덱싱, String 배열 인덱스 체크 등 다양한 구현 가능. 입력 크기가 작아 효율성보다는 간결성과 직관성에 중점을 두어야 함.

여러 장의 10×10 색종이를 도화지 위에 겹치게 붙였을 때, 색종이가 붙은 전체 영역의 넓이를 구하는 문제다. 100×100 배열로 겹침을 처리해 중복 없이 카운트하며, 시뮬레이션 구현력이 핵심이다.

입력받은 N진법 수를 10진법으로 변환하는 문제다. Java의 Integer.parseInt(문자열, 진법) 함수를 이용하면 직접 진법 변환 로직 없이 간단하게 풀이할 수 있다. 10~36진법까지 지원하며, 알파벳도 처리된다.

10진법으로 주어진 수를 N진법으로 변환하는 문제. Java 내장 함수(Integer.toString(num, radix))로 간단히 진법 변환 가능하며, 직접 구현 시 나머지 연산과 알파벳 매핑, 역순 출력이 필요하다. 예외적으로 입력 0도 처리해야 한다.

미국 동전으로 주어진 거스름돈을 최소 개수로 나누는 문제. 큰 동전부터 나누는 그리디 방식으로 해결힘. 각 단계 최적 선택이 전체 최적해가 되는 구조(그리디 성립 조건)를 만족한다.

수열에 대한 점화식을 구하면 간단하게 나오는 문제. 2ⁿ+1 공식으로 도형의 한 변 점 개수를 구해 제곱하면 전체 점의 개수가 나온다. 비트 연산자 (1 << n)을 쓰면 Math.pow보다 빠르고 메모리도 적게 사용한다.

벌집 문제는 계차수열 (각 층마다 6의 배수만큼 방이 늘어남) 규칙을 이용해 푸는 문제. 반복문 대신 k = ceil((sqrt(12*(n-1)+9)-3)/6) 공식으로 더 빠르게 최소 이동 횟수를 구할 수 있다.

입력 N에 대해 N번째 분수를 지그재그 대각선 패턴으로 찾아 "X/Y"로 출력하는 문제. 반복문으로 직접 위치를 추적하거나, 삼각수(1+2+…+n) 공식을 활용해 대각선 번호와 위치를 바로 계산하는 두 가지 방법이 있다.

달팽이가 낮에 A, 밤에 B만큼 이동할 때, 마지막 날은 미끄러지지 않으므로 `(V-B)/(A-B)`를 올림하여 일수를 구함. 반복문 없이 수식만으로 계산 가능하며, 복잡한 조건문 대신 간단한 연산으로 해결할 수 있다.

두 자연수 a, b를 입력받아 a가 b의 배수면 "multiple", b가 a의 배수면 "factor", 아니면 "neither"를 출력하는 문제. 입력이 "0 0"이면 종료. char to int와 String to int 변환에 유의.

자연수 n의 약수 중 k번째로 작은 수를 찾는 문제. 1부터 n까지 순회해 약수를 카운트해도 되고, √n까지 약수를 찾아 정렬한 뒤 k번째 값을 출력하면 더 빠르다. 약수는 짝을 이루는 성질을 활용하면 효율적이다.

n의 약수를 구해 합이 n과 같으면 n = 약수1 + ...로, 아니면 n is NOT perfect.로 출력하는 문제. 단순 반복과 sqrt 최적화 두 가지 방식으로 구현했고, StringBuilder 재사용 및 StringJoiner 활용으로 성능을 높였다.

1000 이하의 수 N개에 대한 소수 찾기 문제. 제곱근 판별법과 에라토스테네스의 체 두 가지 방식으로 해결가능하다. 반복문 한계값을 변경할 때 발생하는 오류를 피하기 위해서는 변수를 분리하거나 final을 활용해 상수로 지정하는 것이 필요하다.

주어진 M~N 범위 내 소수를 에라토스테네스의 체로 판별해 배열에 기록하고, 2부터 √N까지만 체 실행하여 합과 최솟값을 계산하는 문제. 소수가 없으면 -1 출력하며, 시간 복잡도는 O(N log log N), M<2일 땐 2부터 시작한다.

소인수분해 문제. 처음에는 2부터 n까지 나눠 출력해서 접근 (O(N)) → 이후에는 √n까지만 while로 나눠 남은 n > 1이면 출력(O(√N)), 공간 O(1). i=1 재설정 대신 while로 중복 인수 제거.

직사각형의 넓이를 구하는 간단한 문제. 두 정수 A, B를 입력받아 A×B를 출력한다. 입력은 BufferedReader, 출력은 System.out.print() 사용.

(x, y)에서 직사각형의 경계선까지 최소 거리를 구하는 문제. 네 방향(좌, 우, 상, 하) 중 가장 짧은 거리를 Math.min()으로 계산한다.

[네 번째 점 문제는 직사각형 성질을 활용해, x와 y 좌표 중 한 번만 등장한 값을 찾아 네 번째 점을 구한다. 처음에는 중첩 if문으로 접근했으나 논리 흐름의 명료성 및 가독성 면에서 한계가 있었고, XOR이나 HashMap으로 간단히 해결 가능했다.

입력된 정수 n에 대해 도형 둘레는 항상 n×4임을 이용해 정답을 계산한다. int 오버플로를 방지하기 위해 long 타입을 사용해야 한다.

N개의 좌표 중 최소/최대 x, y값을 찾아 가장 작은 직사각형을 구성한 뒤 넓이를 계산한다. 단, 점이 하나일 경우 넓이는 0이다. ChatGPT에게 묻기

세 각을 입력받아 삼각형의 종류를 판별하는 문제다. 각의 합이 180이 아니면 "Error", 모두 같으면 "Equilateral", 두 각만 같으면 "Isosceles", 모두 다르면 "Scalene"을 출력한다.

난이도: ★★☆☆☆ • solved on: 2025-10-01문제 유형: 연결 리스트(Linked List), 포인터 조작요구사항: 단일 연결 리스트의 노드 순서를 역순으로 뒤집어 새로운 head를 반환해야 한다.

문자열 s에서 길이 k의 모든 연속 부분 문자열을 추출해 사전순으로 가장 작은(smallest)과 큰(largest) 문자열을 찾는 문제. substring(i, i+k)과 compareTo()로 비교하며 효율적으로 해결.

`ArrayList<ArrayList<Integer>>`로 중첩 리스트를 구성해 입력 데이터를 저장하고, 쿼리(x, y)에 따라 요소를 출력하는 문제. 인덱스 초과 시 “ERROR!” 출력.

Java 제네릭을 이용해 배열의 모든 요소를 출력하는 printArray() 메서드를 구현하는 문제였다. Integer와 String 등 다양한 타입을 하나의 메서드로 처리하기 위해 제네릭의 개념을 이해하는 것이 핵심이었다.

난이도: ★★☆☆☆ • solved on: 2025-11-05문제 유형: Iterator, 자료형 검사요구사항: Iterator를 이용해 리스트를 순회하면서, 문자열(String)인 원소만 출력해야 한다.자료구조Iterator — 컬렉션의 요소를 순차적으로 접근할 있다

연결 리스트의 특정 위치에 노드를 삽입하는 문제로, 포인터 이동과 참조 연결 구조를 이해하는 것이 핵심이었다.

단일 연결 리스트에서 주어진 위치의 노드를 삭제하는 문제. 0번 인덱스 예외 처리가 핵심이며, 삭제는 값 제거가 아닌 포인터 재연결로 수행해야 함.

두 단일 연결 리스트의 각 노드 데이터를 순차 비교하며 값이 다르거나 한쪽만 끝나면 false, 모두 일치하며 동시에 끝나면 true를 반환하는 문제.

정렬된 두 연결 리스트를 병합하는 문제로, ① ArrayList에 모두 담아 정렬 후 새 리스트 생성(O(NlogN)), ② 투 포인터로 직접 병합(O(N)) 두 가지 방법이 있다. 두 번째 방식이 더 효율적이다.

난이도: ★☆☆☆☆ • solved on: 2025-11-08 문제 유형: Linked List (이중 연결 리스트)요구사항: 정렬된 이중 연결 리스트(Doubly Linked List)에 주어진 데이터를 삽입해, 정렬 순서가 유지되도록 새 노드를 추가해야 한다.

난이도: ★★★☆☆ • solved on: 2025-11-08문제 유형: Stack, 자료구조요구사항:주어진 명령어 목록에 따라 스택을 조작하고, 명령어 3이 주어질 때마다 스택 내 최댓값을 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-11-17 문제 유형: 스택(Stack), 문자열 처리 요구사항: 문자열 내 괄호들이 모두 올바르게 짝을 이루는지 판단해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-11-17 문제 유형: 스택 시뮬레이션, 구현 요구사항: 세 개의 스택에서 top 요소를 제거해 세 스택의 높이가 동일해질 수 있는 최대 높이를 구해야 한다.

난이도: ★★★☆☆ • solved on: 2025-11-17문제 유형: 슬라이딩 윈도우, 자료구조(Deque, HashMap)요구사항:크기 m의 연속된 부분 배열(subarray) 중에서 서로 다른 숫자의 개수(distinct count)가 최대가 되는 값 구하기

[Queue] Circular Array Rotation > 난이도: ★☆☆☆☆ • solved on: 2025-11-17 문제 요약 문제 유형: 배열 회전, 인덱스 변환

난이도: ★☆☆☆☆ • solved on: 2025-11-21문제 유형: 스택(Stack), 큐(Queue), 시뮬레이션요구사항: 두 개의 스택만 이용해 큐의 기능(삽입, 삭제, 조회)을 구현해야 한다.자료구조Queue (자바 기본 자료구조)Stack (문제 의도)

난이도: ★☆☆☆☆ • solved on: 2025-11-21문제 유형: 자료구조(Queue, Stack), 문자열 검사요구사항:주어진 문자열이 palindrome(회문)인지 확인하기 위해Stack에는 앞에서부터 문자 push, Queue에는 뒤에서부터 문자 enque

난이도: ★☆☆☆☆ • solved on: 2025-11-21문제 유형: 재귀(Recursion), 수학, DP 기초요구사항:정수 n이 주어질 때, n번째 피보나치 수(F(n))를 계산한다.

난이도: ★★★☆☆ • solved on: 2025-11-21문제 유형: 재귀(recursion), 문자열 처리, 수학요구사항: 문자열로 주어진 큰 수 n을 각 자릿수 합으로 줄여 단일 자릿수(super digit)로 만든다.

난이도: ★★★☆☆ • solved on: 2025-12-02문제 유형: DFS, 백트래킹, 재귀요구사항: X를 N제곱수들의 합으로 나타내는 모든 고유 조합(unique combinations) 개수를 구해야 한다

난이도: ★☆☆☆☆ • solved on: 2025-12-05문제 유형: 트리 순회(Preorder Traversal), 재귀요구사항: 주어진 트리의 root부터 전위 순회(preorder traversal) 방식으로 노드 값을 한 줄에 공백으로 구분하여 출력해야 한다

난이도: ★☆☆☆☆ • solved on: 2025-12-05문제 유형: 트리 순회(In-order Traversal)요구사항: 주어진 이진트리에 대해 중위 순회(left → root → right) 진행 후, 노드 값을 공백으로 구분하여 한 줄에 출력한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-05문제 유형: 트리 순회(Post-order Traversal)요구사항: 주어진 트리에서 후위 순회(left → right → root) 를 수행해, 모든 노드 값을 공백으로 구분하여 한 줄에 출력한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-05문제 유형: 트리, BFS요구사항: 루트 노드부터 시작하여 레벨 순서(level-order)로 노드 값을 출력해야 한다.자료구조

난이도: ★★☆☆☆ • solved on: 2025-12-05문제 유형: 트리(Tree), DFS요구사항: 이진 트리의 height(높이) 를 계산해야 한다. height는 root에서 leaf까지의 edge 수로 정의된다.

난이도: ★☆☆☆☆ • solved on: 2025-12-07문제 유형: 이진 탐색 트리(BST), 재귀·반복 삽입요구사항: 주어진 BST에 data 값을 삽입한 뒤 root 노드 전체를 반환해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-07문제 유형: BST, 트리 탐색, 재귀요구사항: BST에서 두 값 v1, v2의 LCA(Lowest Common Ancestor) 를 찾아 반환해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-07이 문제의 경우, Hackerrank의 테스트 구조에 문제가 생겨 직접 submission을 하지는 못했습니다.

난이도: ★★☆☆☆ • solved on: 2025-12-10문제 유형: 자료구조, 힙(Heap), 우선순위 큐요구사항다음 세 가지 쿼리를 효율적으로 처리해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-11문제 유형: 정렬(Sorting), 문자열 처리요구사항매우 큰 정수들이 문자열(String) 로 주어진다.이 수들을 정수값 기준 오름차순으로 정렬해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-11문제 유형: 정렬, 그리디요구사항:정수 배열이 주어졌을 때, 절대 차이가 최소인 모든 쌍을 찾아a1 b1 a2 b2 ... 형식으로 오름차순 정렬된 상태로 출력해야 한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-14문제 유형: 구현, 조건 분기요구사항: 세 변의 길이가 주어질 때, 삼각형이 될 수 있는지 판단하고 Equilateral / Isosceles / Scalene / Invalid 중 하나를 출력해야 한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-18문제 유형: 구현, 정렬요구사항: 세 막대로 삼각형이 되도록 만들 때, 가능한 최대 둘레를 출력해야 한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-19문제 유형: 수학, 구현, 시간 복잡도(점근 표기)요구사항: 입력 (n)에 대해 수행 횟수 (n^2) 과 최고차항 차수 2를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-21문제 유형: 시간 복잡도 (연산 횟수) 분석, 조합 (Combinatorics)요구사항: 주어진 의사코드에서 i < j < k를 만족하는 3중 반복문의 실행 횟수를 출력

[24313] 알고리즘 수업 - 점근적 표기 1 > 난이도: ★★☆☆☆ • solved on: 2025-12-21 문제 요약 문제 유형: 수학, 구현, Big-O 판정 요구사항: 모든 n ≥ n0에 대해 a1n + a0 ≤ cn 이면 1, 아니면 0 출력

난이도: ★★☆☆☆ • solved on: 2025-12-23문제 유형: 브루트포스, 조합요구사항: N장의 카드 중 서로 다른 3장을 골라 합이 M을 넘지 않으면서 가장 큰 합을 출력해야 한다.

[2231] 분해합 > 난이도: ★☆☆☆☆ • solved on: 2025-12-23 문제 요약 문제 유형: 완전탐색(브루트포스), 구현 요구사항: 주어진 자연수 N에 대해, N = i + (i의 각 자리수 합)을 만족하는 가장 작은 생성자 i를 찾아 출력해야

난이도: ★☆☆☆☆ • solved on: 2025-12-23문제 유형: 완전탐색(브루트포스), 연립방정식요구사항: 아래 연립 일차방정식을 만족하는 정수 해 (x, y)를 찾아 출력해야 한다.

난이도: ★★★☆☆ • solved on: 2025-12-23문제 유형: 완전탐색 (Brute Force), 2D 배열, 구현요구사항: N×M 보드에서 임의의 8×8 부분을 골라 체스판 패턴(좌상단이 B 시작 또는 W 시작)으로 만들기 위해 다시 칠해야 하는 칸

난이도: ★★☆☆☆ • solved on: 2025-12-24문제 유형: 브루트포스(Brute Force), 문자열 처리(String)요구사항: N번째로 "666"(연속) 이 포함된 수를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-24 문제 유형: 완전탐색 (Brute Force)요구사항: 정확히 Nkg을 만들기 위해 3kg, 5kg 봉지를 사용했을 때 봉지 개수의 최솟값을 출력한다. 만들 수 없으면 -1을 출력

난이도: ★☆☆☆☆ • solved on: 2025-12-26 문제 유형: 정렬, 선택(Selection) 요구사항: 점수 N개 중 내림차순으로 정렬했을 때 K번째 점수(커트라인)를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-27문제 유형: 정렬(sort), I/O 최적화요구사항: N개의 정수를 오름차순으로 정렬해 한 줄에 하나씩 출력해야 한다.

난이도: ★☆☆☆☆ • solved on: 2025-12-28문제 유형: 문자열 처리, 정렬요구사항: 입력된 수의 각 자리 숫자를 내림차순으로 정렬하여 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-29문제 유형: 정렬(Sorting), 구현요구사항: N개의 점을 x 오름차순, x가 같으면 y 오름차순으로 정렬해 출력한다.

난이도: ★★☆☆☆ • solved on: 2025-12-29문제 유형: 정렬 (Sorting), 문자열 (String), 중복 제거 (Deduplication)요구사항: 단어를 길이 오름차순, 길이가 같으면 사전순 오름차순으로 정렬하되 중복 단어는 한 번만 출력

난이도: ★★☆☆☆ • solved on: 2025-12-29문제 유형: 정렬 (Sorting), 안정 정렬 (Stable Sort)요구사항: 회원을 나이 오름차순으로 정렬하되, 나이가 같으면 가입한 순 (입력 순) 을 유지해서 출력한다.

난이도: ★★★☆☆ • solved on: 2025-12-29문제 유형: 정렬, 해시(좌표 압축)요구사항: 주어진 수열의 각 값에 대해, 중복 제거 후 정렬했을 때의 인덱스를 원래 순서대로 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-31문제 유형: 해시맵(HashMap), 문자열 처리, 구현요구사항: 포켓몬 이름 ↔ 번호를 빠르게 상호 변환하여 질의 M개에 답해야 한다.

난이도: ★★☆☆☆ • solved on: 2025-12-31문제 유형: 해시맵(HashMap), 카운팅(counting)요구사항: N개의 정수 카드에서 각 질의 수가 몇 개 있는지 개수를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-01문제 유형: 해시 (Hash), 문자열, 정렬요구사항: 듣도 못한 사람과 보도 못한 사람의 교집합을 찾아 사전식(오름차순)으로 출력해야 한다.

난이도: ★☆☆☆☆ • solved on: 2026-01-01문제 유형: 집합(Set), 해시(Hash)요구사항: 두 집합 A, B에 대해 대칭 차집합 $((A-B) ∪ (B-A))$의 원소 개수를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-02문제 유형: 유클리드 호제법, 수학요구사항: 테스트 케이스마다 두 자연수의 최소공배수(LCM) 를 출력해야 한다.

난이도: ★★★☆☆ • solved on: 2026-01-03문제 유형: 수학, 최대공약수(GCD)요구사항: 기존 가로수 위치를 기준으로 모든 가로수 사이의 간격이 동일해지도록 만들 때, 추가로 심어야 하는 가로수의 개수를 구해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-03문제 유형: 수학, 소수 판정, 브루트포스요구사항: 각 테스트케이스마다 입력된 수 n 이상에서 가장 작은 소수를 찾아 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-03문제 유형: 수학, 에라토스테네스의 체, 구현요구사항: 입력된 구간 \[n, m] 안에 존재하는 모든 소수를 한 줄씩 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-13문제 유형: 자료구조(Queue/Stack), 시뮬레이션 최적화

난이도: ★☆☆☆☆ • solved on: 2026-01-15문제 유형: 수학, 약수 성질요구사항: 어떤 수 (N)의 진짜 약수들(1과 (N) 제외)이 주어질 때, (N)을 구해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-17문제 유형: 정렬, 구현, 해시/카운팅요구사항: N개의 정수에 대해 산술평균(반올림), 중앙값, 최빈값, 범위를 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-17문제 유형: 문자열 처리, 정렬, 해시

난이도: ★★★☆☆ • solved on: 2026-01-19문제 유형: 재귀, 분할 정복요구사항: 크기 N의 정사각형에 대해 중앙이 비어 있는 별 패턴을 재귀적으로 출력해야 한다.

난이도: ★★☆☆☆ • solved on: 2026-01-20문제 유형: 백트래킹(Backtracking), 순열요구사항: 1부터 N까지의 자연수 중에서 중복 없이 M개를 고른 모든 순열을 출력해야 한다.