클래스와 객체, 인스턴스의 차이
CS/자바2025. 12. 12. 10:41클래스와 객체, 인스턴스의 차이

클래스 (Class)객체를 만들기 위한 설계도 (틀)만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것객체 (Object)클래스로부터 만들어지는 실체 (결과물)프로그램에 생성된 모든 실체클래스로 선언된 변수인스턴스 (Instance)객체가 메모리에 할당이 된 상태, 런타임에 구동되는 객체객체와 같은 의미로 쓰이기도 한다.'특정 클래스에서 생성된 객체' 라는 관계 강조.객체지향객체의 기능과 속성을 분석하여 그 내용들을 클래스라는 코드로 작성하고그 클래스를 기반으로 메모리에 실질적으로 구현화(인스턴스화)하여 작성하는 개발 기법// 클래스 정의class Dog { String name; void bark() { System.out.println("멍멍!"); }}public cl..

[DFS] 같은 부류 찾기 유형 정리
CS/알고리즘2025. 8. 19. 10:55[DFS] 같은 부류 찾기 유형 정리

이 글은 인프런 문과생도 이해하는 DFS 알고리즘!-입문편 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.

[DFS] 연결된 요소 찾기(그래프 탐색) 유형 정리
CS/알고리즘2025. 8. 11. 14:25[DFS] 연결된 요소 찾기(그래프 탐색) 유형 정리

이 글은 인프런 문과생도 이해하는 DFS 알고리즘!-입문편 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. [자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편| 개발자로 취직하기 - 인프런 강의현재 평점 5점 수강생 408명인 강의를 만나보세요. 문과 출신의 현업 개발자가 취업하기 위해 공부한 방식 그대로 설명하는 기초 DFS 강의입니다 :) 지루한 이론 강의는 최소한으로 줄이고, 직접www.inflearn.com

12. [Java] 투 포인터 (2-Pointer)
CS/알고리즘2025. 3. 21. 17:4912. [Java] 투 포인터 (2-Pointer)

일반적으로 배열에서 2개의 인덱스(포인터)를 움직이면서 문제를 해결하는 방법보통 왼쪽(left), 오른쪽(right) 혹은 시작(start), 종료(end) 쌍으로 포인터를 표현한다.외워야 할 알고리즘이라기 보다는 이렇게도 문제를 풀 수 있구나 정도로 알아두면 된다.2개의 포인터를 동시에 +1씩 움직이면서 답을 구하는 알고리즘은 [슬라이딩 윈도우] 라고 부르기도 한다.  Referencehttps://www.acmicpc.net/problem/2559https://school.programmers.co.kr/learn/courses/30/lessons/42885https://school.programmers.co.kr/learn/courses/30/lessons/67258

11. [Java] DP (Dynamic Programming : 동적 계획법)
CS/알고리즘2025. 2. 25. 21:0211. [Java] DP (Dynamic Programming : 동적 계획법)

DP (Dynamic Programming : 동적 계획법)N-a번째 답(값)을 이용하여 N번째 답을 구하는 알고리즘Memoization 한 번 구한 값을 배열 등에 저장(메모)해두고, 다음에 같은 값이 필요하면 메모해 둔 값을 사용하는 것으로 시간적 효율성을 증가시킨다.일반적으로 N번째 답(값)을 구하기 위해 기존에 구해둔 N-a번째 답(값)을 사용하므로, 초기값은 직접 구해서 세팅하는 경우가 많다.주로 For문과 DP값을 저장하는 배열로 구현하며 재귀함수로 구현하기도 한다.📌 DP 접근 방법N-1번째 혹은 N-2번째 답(값)을 이용하여 N번째 답(값)을 구할 수 있을까 고민해본다.경우의 수 구하는 문제가 DP문제인 경우가 상당히 많다.일종의 점화식을 이용해서, 초기값 1번째 혹은 2번째 값까지는 직..

10. [Java] Backtracking (퇴각 검색)
CS/알고리즘2025. 2. 25. 13:0810. [Java] Backtracking (퇴각 검색)

Backtracking백트래킹이란 재귀적으로 문제를 하나씩 풀어가면서 현재 재귀를 통해 확인 중인 노드(상태)가 제한된 조건에 위배되는지 판단하고, 만약 해당 노드가 제한된 조건을 위배한다면 그 노드를 제외하고 다음 단계로 나아가는 방식이다.가장 중요한 점은 제한 조건을 위배한다면 그 노드를 제외한다는 점이다,.현재 상태에서 다음 상태로 가는 모든 경우의 수를 찾아서 이 모든 경우의 수가 더이상 유망하지 않다고 판단되면 이전의 상태로 돌아가는 것더 이상 탐색할 필요가 없는 상태를 제외하는 것을 가지치기(pruning)이라고 한다.DFS를 통해 모든 노드를 깊이 우선 탐색을 하면서 더 이상 필요 없는 부분을 쳐내는 행위를 백트래킹(가지치기)이라고 생각하면 된다.DFS와 Backtracking의 다른점DFS..

image