Java File 클래스 완벽 가이드
1. 개요
java.io.File 클래스는 파일이나 디렉터리 경로의 추상적 표현입니다. 주로 파일 및 디렉터리의 생성, 검색, 삭제 작업에 사용됩니다.
2. 생성자
File 클래스는 세 가지 주요 생성자를 제공합니다:
public File(String pathname) : 주어진 경로 문자열을 추상 경로로 변환하여 File 객체 생성
public File(String parent, String child) : 부모 경로와 자식 경 ...
8월 8일 13:55에 게시됨
리스트 구조 이해 및 기본 연산 실습
연결 리스트 기초 개념
배열과 연결 리스트의 차이점을 이해하는 것이 중요합니다. 배열은 연속된 메모리 공간에 저장되지만, 연결 리스트는 각 요소가 다음 요소를 가리키는 포인터로 연결됩니다. 이로 인해 삽입/삭제 시 시간 복잡도가 다르며, 특히 중간 위치에서의 조작이 유연합니다.
203. 연결 리스트 요소 제거
가상 헤드 노드를 사용하면 첫 번째 노드 삭제 시 처 ...
8월 5일 03:48에 게시됨
이진 트리와 힙 구조의 핵심 개념 및 응용
트리 구조 개요
트리는 계층적 관계를 표현하는 비선형 자료구조로, 유한 개의 노드로 구성된다. 루트 노드에서 시작하여 각 노드는 자식 노드들을 가질 수 있으며, 전체 구조는 순환하지 않는다.
기본 용어
노드의 차수(Degree): 자식 노드의 수. 예를 들어 A 노드가 3개의 자식을 가지면 차수는 3.
단말 노드(Leaf Node): 자식이 없는 노드.
부모/자식 노 ...
7월 24일 23:35에 게시됨
자바 메서드 활용과 재귀 호출
메서드 기본 개념
메서드는 특정 기능을 수행하는 코드 블록입니다. 주요 장점:
코드 모듈화로 복잡성 감소
재사용성을 통한 개발 효율 향상
가독성 및 유지보수성 개선
// 윤년 판별 메서드 예시
public class CalendarUtil {
public static boolean checkLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
...
7월 19일 05:33에 게시됨
이진 트리 탐색 알고리즘 실습 - DAY12
알고리즘 기록 제12일 [이진 트리]
1. LeetCode 226. 이진 트리 뒤집기
주어진 이진 트리의 루트 노드를 기준으로 트리를 완전히 뒤집은 후, 새로운 루트를 반환하세요.
입력: root = [4,2,7,1,3,6,9]
출력: [4,7,2,9,6,3,1]
문제 링크
핵심 접근 방식:
재귀적 뒤집기: 현재 노드와 그 자식들을 순차적으로 처리하며 트리 전체를 재귀적으로 뒤집습니다.
자식 교환: 각 ...
7월 18일 17:37에 게시됨
이진 트리 재귀 완전 정복: 직관에서 원리 이해로
서론: 재귀에 대한 솔직한 고백
재귀를 코딩할 때 종종 이런 경험이 있다. 코드는 작동하지만, "왜 이게 맞는지"는 설명하기 어렵다. 예를 들어:
왜 트리를 해제할 때 후위 순회를 써야 할까?
어떤 문제에서는 논리합(||)을 쓰고, 어떤 문제에서는 논리곱(&&)을 쓸까?
함수를 분리해서 작성해야 하는 경우는 언제일까?
이 글은 ...
7월 10일 05:14에 게시됨
자바 재귀 및 바이트 스트림을 활용한 파일 복사
재귀 이해
메소드가 자기 자신을 호출하는 프로그래밍 기법으로, 다음 주의사항이 적용됩니다:
반드시 종료 조건(exit condition)이 존재해야 함
호출 깊이 제한으로 스택 오버플로우 방지
생성자에서는 재귀 사용 불가
기본 재귀 예제
public class RecursionExample {
public static void main(String[] args) {
recursiveMethod(3);
}
stat ...
7월 7일 00:58에 게시됨
알고리즘 실습 문제 풀이 분석
1부: 재귀
문제 1: 숫자 세기
/*
n=1, 결과 1
n=2, 결과 2 (12, 2)
n=3, 결과 2 (13, 1)
n=4, 결과 4 (14, 13, 24, 124)
n=5, 결과 4 (15, 25, 125, 5)
관찰 결과:
n이 홀수이면 f[n] = f[n-1]
n이 짝수이면 f[n] = f[n-1] + f[n/2]
*/
#include <iostream>
using namespace std;
const int MAX = 10000;
int dp[MAX];
int main() {
dp[1] = 1;
int n;
...
7월 5일 00:14에 게시됨
스택과 재귀: 385, 341, 394 문제 해결
385. 미니 구문 분석기 (중간)
문자열 s가 정수 중첩 리스트를 나타낸다고 가정할 때, 이를 구문 분석하는 파서를 구현하고 파싱 결과인 NestedInteger를 반환하세요.
리스트의 각 요소는 정수 또는 정수 중첩 리스트일 수 있습니다.
예제 1:
<strong>입력:</strong> s = "324",
<strong>출력:</strong> 324
<strong>설명:</s ...
7월 2일 04:22에 게시됨
8퀸 난제: 재귀와 반복을 활용한 백트래킹 구현
8퀸 난제는 체스판 위에 8개의 퀸을 서로 공격하지 않도록 배치하는 고전적인 백트래킹 문제다. 이번 글에서는 재귀적 접근과 반복적 접근 두 가지 방식으로 해결해본다.
재귀적 백트래킹
재귀 방식은 현재 행에 퀸을 배치하고, 유효성 검증 후 다음 행으로 진행하는 구조다. 모든 행에 성공적으로 배치되면 해답을 출력한다.
#include <iostream>
#include <c ...
7월 1일 02:16에 게시됨