전체 글 612

📌 깊이 우선 탐색(Depth First Search, DFS)

스택을 이용하여 그래프를 순회하는 방법나를 먼저 방문하고 그 다음으로 인접한 노드를 차례대로 방문(단, 방문했던 노드는 방문하지 않는다.) 예제)1 -> 2 -> 3 -> 4 -> 5 -> 6 연습)다음 그래프에 대하여 1을 지가으로 DFS한 결과는? (단, 인접한 노드가 여러개일 경우 노드 번호가 작은 노드부터 방문한다.)1 -> 2 -> 3 -> 5 -> 6 -> 7 -> 8 -> 9 -> 4 -> 10 -> 11  -깊이 우선 탐색의 과정DFS(Vertex, Visited); 1. V를 방문했다고 처리한다.2. V와 인접한 모든 W(인접노드)에 대하여 다음을 반복3. 만약 W를 아직 방문하지 않았다면4. DFS(W, Visited);5. 방문순서 반환 -구현123456789101112void DFS..

📌 기본 정렬(선택, 삽입, 버블)

🎯정렬 : 특정 기준을 적용하여 나열함🎯 선택정렬 : 최솟값을 앞으로 이동시킴| 14 4 8 23 11 5 3 2 4 9-> 가장 작은 값을 찾아서 위치를 바꿈2 | 4 8 23 11 5 3 14 4 92 3 | 8 23 11 5 4 14 4 92 3 4 | 23 11 5 8 14 4 92 3 4 4 | 11 5 8 14 23 92 3 4 4 5 | 11 8 14 23 92 3 4 4 5 8 | 11 14 23 92 3 4 4 5 8 9 | 11 14 232 3 4 4 5 8 9 11 | 14 232 3 4 4 5 8 9 11 14 | 232 3 4 4 5 8 9 11 14 23 |12345678910111213141516171819202122232425262728293031public class S..

📌 문자열

🎯 기본 문자열 연산12345678910// 1. 기본 문자열 연산String str = "Hello";// 문자열 길이str.length();// 문자 접근str.charAt(index);// 부분 문자열str.substring(start, end);// 문자열 비교str.equals(anotherStr); cs🎯 문자열 변환1234567891011121314// 2. 문자열 변환String str = "Hello";// 문자 배열로 변환str.toCharArray();// 문자열 분리str.split(regex);// 문자열 합치기String delimiter = ", ";String[] elements = {"apple", "banana", "cherry"};String result = Stri..

📌 자료구조 : Set, Map

🎯 Set • **집합(Set)**은 중복되지 않는 원소들의 모음. • 수학에서의 집합 개념을 차용한 자료구조로, 주로 원소의 중복을 허용하지 않고, 순서가 중요하지 않은 경우에 사용. • 중복 불허: 동일한 원소가 두 개 이상 존재할 수 없음. • 순서 없음: 원소들 간에 순서가 존재하지 않음. • 빠른 탐색: 일반적으로 탐색, 삽입, 삭제의 시간 복잡도가 평균적으로 O(1). - 아래 예제를 이해하면서 타이핑 해볼 것.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475import java.util.H..

📌 재귀함수

🎯 재귀함수 : 자기 자신을 부르는 함수🏃🏻 귀납적으로 문제를 해결하는 방법* 순차적 계산법  A를 계산한다. A를 이용해서 B를 계산한다. B를 이용해서 C를 계산한다....* 귀납적 계산법  "나"를 계산하기 위해 또 다시 "나"를 활용한다.🏃🏻 재귀함수 디자인을 위한 3가지 절차1) 함수의 역할을 정확하게 정의한다.2) 기저조건(Base Condition)에서 함수가 제대로 동작함을 보인다.3) 함수가 (작은 input에 대해) 제대로 동작한다고 가정하고 함수를 완성한다.🎯 문제✍️ 팩토리얼 구하기 - 5!을 출력하시오.12345678910111213141516public class RecursiveCall {     public static int getFactorial(int n) {..

📌 배열(개념)

🎯 회전시키기🏃🏻90도 회전123456789101112131415161718192021222324252627282930313233343536public class Sample {      public static void main(String[] args) {         int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};        rotate90(matrix);        printMatrix(matrix);     }     public static void rotate90(int[][] matrix) {         int N = matrix.length;        int[][] temp = new int[N][N];         for ..

📌 배열(문제집)

🏃🏻 기본- 공던지기https://school.programmers.co.kr/learn/courses/30/lessons/120843 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr- 2차원 배열 만들기https://school.programmers.co.kr/learn/courses/30/lessons/120842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr- 배열 회전 시키기https://school.p..

📌시간 복잡도

시간 복잡도?시간 복잡도는 알고리즘의 효율성을 측정하는 중요한 척도 중 하나로, 알고리즘이 실행되는 데 걸리는 시간을 입력 크기와 관련지어 표현 것.코딩 테스트에서 효율성을 묻는 문제는 문제 제한 사항에 명시되어 있는 조건을 극한으로 맞추는 입력 데이터를 사용해서 코드를 평가함. 빅오 표기법(Big O Notation)시간 복잡도를 가장 일반적으로 나타내는 방법으로, 최악의 경우를 분석한 것. 주요 시간 복잡도 유형1. O(1) - 상수 시간(Constant Time) : 입력 크기에 상관없이 실행 시간이 일정한 경우.2. O(n) - 선형 시간(Linear Time) : 입력 크기에 비례해서 실행 시간이 증가하는 경우.3. O(n^2) - 이차 시간(Quadratic Time) : 중첩된 루프를 사용하..

📌 목차

📌 Chapter01시간복잡도(https://ttolkist.tistory.com/647)정수론(https://ttolkist.tistory.com/433)자료구조 : 스택, 큐, 덱(https://ttolkist.tistory.com/649) 📌 Chapter02배열(https://ttolkist.tistory.com/650) 📌 Chapter03Set, Map(https://ttolkist.tistory.com/652)재귀함수(https://ttolkist.tistory.com/651) 📌 Chapter04문자열(https://ttolkist.tistory.com/653)트리(https://ttolkist.tistory.com/162) 📌 Chapter05기본 정렬(선택, 삽입, 버블)(ht..

반응형