일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바백엔드
- 후기
- 코딩테스트
- nGrinder
- AWS
- 트러블슈팅
- 알고리즘
- github
- 레디스
- F-Lab
- Flutter
- grafana
- 데이터구조
- 자바
- backend
- 부트캠프
- java
- MySQL
- 멘토링
- 백준
- FLAB
- 성능테스트
- Spring
- IntelliJ
- error
- EC2
- 도커
- 에프랩
- 플러터
- 백엔드
- Today
- Total
목록알고리즘 (21)
민스씨의 일취일장

백준 11724 연결 요소의 개수 문제에 대한 글입니다. 백준 11724 연결 요소의 개수 문제 문제는 아래 링크에서 확인할 수 있다. 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 풀이 재귀 호출을 이용한 DFS 2차원 배열을 이용해서 연결 정보를 입력받느다. 그 다음 재귀 호출을 이용해 DFS를 수행한다. 특징 정보는 2차원 배열에 담았지만, 방문 이력은 1차원 배열에 담는다. 연결 정보 상관없이, 연결 돼 있는 노드에 일단 방문했는지 여부만..

백준 26169 세 번 이내에 사과를 먹자 문제에 대한 글입니다. 백준 26169 세 번 이내에 사과를 먹자 문제 문제 정보는 아래 링크에서 확인할 수 있다. 26169번: 세 번 이내에 사과를 먹자 5 x 5 크기의 보드가 주어진다. 보드는 1 x 1 크기의 정사각형 격자로 이루어져 있다. 보드의 격자는 사과가 1개 있는 격자, 장애물이 있는 격자, 빈칸으로 되어 있는 격자로 구분된다. 격자의 위치 www.acmicpc.net 풀이 재귀 호출을 이용한 DFS 재귀호출을 이용해서 깊이 우선 탐색을 진행했다. 특징 3의 깊이까지만 탐색을 진행한다. 이를 위해서 깊이 정보를 파악하기 위한 변수 하나를 정의해 주어야 한다. int depth = 0; 경계값 주의 처음 시작하는 지점은 사과의 개수를 파악하지도(..

백준 1388 바닥 장식 문제에 대한 글입니다. 백준 1388 바닥 장식 문제 문제 내용은 아래 링크에서 확인할 수 있다. 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 분석 DFS로 풀 수 있는 문제이다. 특징은 한 기점에서 고려해야 할 다음 방향이 하나이므로 단순한 DFS이다. 풀이 재귀 호출을 이용한 DFS execute() 메서드를 이용해서 문제 해결을 시작한다. map의 모든 요소를 순차적으로 방문하며 탐색한다. (1) map 요소는 방문 이력이 없는 경우 (visited[i][j] == false)에만 ..

구름톤 챌린지 코딩테스트 4주차 학습일기입니다. 4주차 학습일기 Day19 대체경로 문제 분석 N개의 마을이 M개의 길로 이어져 있다. 이 길은 양방향으로 연결 돼 있다. i번째 날에는 i 마을이 공사를 하기 때문에 방문할 수 없다. 시작점과 도착지가 주어져 있을 때 날마다 최단 경로가 어떤지를 계산해 출력하는 문제이다. 해결 전략 1. 인접리스트배열을 사용해 마을의 연결 관계를 입력한 뒤 모든 배열리스트를 정렬해준다. 2. 목적지에 도착하면 바로 연산을 멈출 수 있는 BFS(너비 우선 탐색)을 이용해 접근할 수 있는 모든 깊이 체크하며 방문한다. 이 때 하나의 깊이를 들어갈 때마다 카운트를 올려주고 현재 방문중인 마을(노드)를 매번 업데이트 해준다. 2-1. 도착지가 공사중인 마을이거나 출발지와 같은 ..

구름톤 코딩테스트 챌린지 4주차 학습일기입니다. 4주차 학습일기 Day16 연합 문제 분석 N개의 섬이 있고 M개의 마을 연결 정보가 있다. 연결은 단방향이고 양쪽에서 서로 연결돼 있을 경우 하나의 연합이 된다. 모든 연결 정보를 분석해 연합의 수를 출력하면 된다. 풀이 전략 1. N x N 배열을 이용해 M개의 연결 정보를 기록하고, N의 길이의 배열에 최상단 노드의 정보(부모노드)를 기록한다. (처음엔 자기 자신을 가리킨다.) 2. N x N 배열에서 (i, j), (j, i) 요소가 모두 true인 경우가 양방향 연결 된 상태이다. 이 때 연합을 시도한다. 3-1. find함수를 정의해 부모노드의 정보를 불러온다. 3-2. 불러온 두 노드의 부모가 일치한 경우 연합하지 않는다. 3-3. 불러온 두 ..

구름톤 코딩테스트 챌린지 3주차 학습일기입니다. 3주차 학습일기 Day14 작은 노드 문제 분석 N개의 노드, M개의 간선이 주어진다. 첫 노드는 K이고 주어진 간선들 중 최소값의 노드로 이동한다. 중복 이동은 허용되지 않으며 자기 자신으로 향하는 간선은 없다. 계속 이동해 더이상 이동할 수 없을 때까지 방문한 노드의 총 수와 도착한 노드의 번호를 출력한다. 풀이 전략 1. 연결 정보를 이중 배열로 담고, 현재 노드와 방문한 노드의 수를 체크하는 변수를 정의해 놓는다. 2. 반복문을 활용해 처음으로 만나는 연결 가능한 노드로 이동하고 방문 노드 수를 올려주고 현재 노드 값을 업데이트 해준다. (자동으로 최소값을 찾게 된다.) 3. 방문한 노드의 모든 행과 열을 방문처리한다. 4. 위의 2, 3번을 더 이..