1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제풀이 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 되므로 서로 인접해있는 배추들이 몇 군데에 퍼져있는지 조사하면 총 몇 마리의 지렁이가 필요한지 알 수 있다. 예를 들어 배추밭이 아래와 같이 구성되어 있으면 최소 5마리의 배추흰지렁이가 필요하다. 0은 배추가 심어져 있지 않은 땅이고, 1은 배추가 심어져 있는 땅을 나타낸다. 배추밭에 대한 정보를 담은 map 배열과 방문 여부를 표시하는 visited 배열을 초기화한다 배추가 심어져 있는 땅을 찾는다 DFS를..
코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제풀이 비상연락망과 연락을 시작하는 당번에 대한 정보가 주어질 때, 가장 나중에 연락을 받게 되는 사람 중 번호가 가장 큰 사람을 구하는 문제다. 위 그림은 비상연락망을 나타낸 그림이고 각 원은 개개인을 의미하며, 원 안의 숫자는 그 사람의 번호이다. 빨간원은 연락을 시작하는 당번을 의미하고 화살표는 연락이 가능한 방향을 의미한다. 가장 나중에 연락을 받게 되는 사람을 찾기 위해서 BFS를 통해 depth 배열에 연락받는 순서를 저장해주었다. 그림을 보면서 설명을 해보겠다! 먼저 연락을 시작하는 당번은 1로 둔다. 비상연락망이 가동되면 2번은 연락가능한 7번과 ..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제풀이 해야 할 V개의 작업이 있는데 어떤 작업은 특정 작업이 끝나야 시작할 수 있다. 이를 선행 관계라 한다. 이런 작업의 선행 관계를 나타낸 그래프가 주어졌을 때, 한 사람이 한 번에 하나씩 일할 수 있는 작업 순서를 찾는 문제다. 위상 정렬을 사용하여 문제를 해결했다. 선행 관계를 입력받아서 그래프를 만들어주고 cnt 배열에 각 정점이 가지는 선행 정점의 수를 저장한다. 작업 순서를 찾기 위해 먼저 cnt[i]가 0인 정점들을 큐에 넣어준다. cnt[i] = 0은 선행 정점이 없으므로 바로 작업을 처리할 수 있다. 큐에서 정점을 하나씩 꺼내면서 정점을 출력..
11265번: 끝나지 않는 파티 입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸 www.acmicpc.net 문제풀이 플로이드 와샬에 대한 자세한 내용은 아래 포스팅을 참고해주세요:) 플로이드 와샬 알고리즘(Floyd Warshall Algorithm) 플로이드 와샬 알고리즘이란? '모든 정점'에서 '모든 정점'으로의 최단 경로를 구하는 알고리즘 다익스트라 알고리즘과의 차이점 다익스트라는 하나의 정점에서 다른 모든 정점까지의 최단 경 woojeenow.tistory.com 플로이드 와샬 알고리즘으로 각 파티장끼리의 최소 이동 시간을 구..
플로이드 와샬 알고리즘이란? '모든 정점'에서 '모든 정점'으로의 최단 경로를 구하는 알고리즘 다익스트라 알고리즘과의 차이점 다익스트라는 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘으로 가장 적은 비용을 하나씩 선택한다. 하지만 플로이드 와샬 알고리즘은 기본적으로 '거쳐가는 모든 정점'을 기준으로 알고리즘을 수행한다. 알고리즘 위와 같은 그래프가 존재한다고 할 때, D는 각각의 정점이 다른 정점으로 가는 비용을 이차원 형태로 저장해놓은 것이다. 처음에는 위와 같은 상태이다. 이때 무한대는 이동하는 경로가 없다는 뜻이고 자신 자신의 비용은 0이다. D[x][y] = x에서 y로 가는 최소 비용을 의미한다. 거쳐가는 정점을 K라고 하자. X에서 Y로 가는 최소 비용과 X에서 노드 K로 ..
10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제풀이 적록색약이 아닌 사람이 봤을 때의 구역수를 DFS로 구할 때 초록색인 구역은 빨간색으로 바꿔준다. 그리고 다시 적록색약인 사람이 봤을 때의 구역수를 DFS로 구해준다. C++ 코드
10711번: 모래성 첫째 줄에는 모래성의 가로세로 격자 크기 H, W가 주어진다. (1 ≤ H, W ≤ 1,000) 그 다음 H줄에 걸쳐 W개의 문자로 모래성의 상태를 나타내는 문자가 들어온다. 각 문자는 1~9 사이의 숫자, 또는 '.' 이 www.acmicpc.net 문제풀이 처음 시도했을 때는 모래성을 모두 queue에 넣고 8방향을 모두 살펴 무너지는지 확인 후 무너지지 않는 모래성을 queue에 다시 넣어줬다. 결과는 시간초과.. 더보기 #include #include #define MAX 1001 using namespace std; int h, w; int map[MAX][MAX]; bool visited[MAX][MAX]; int dx[] = { -1, 1, 0, 0, -1, -1, 1,..
- Total
- Today
- Yesterday
- 큐
- Two Pointer
- 구현
- 트리
- programmers
- 문자열
- algorithm
- 위상 정렬
- BFS
- 정렬
- 알고리즘
- SWEA
- 이분 탐색
- 투 포인터
- 분할 정복
- 스택
- 백준
- 두 포인터
- BOJ
- SW Expert Academy
- 자바
- Java
- 그래프
- C++
- 배열
- dfs
- 브루트포스
- Kotlin
- 프로그래머스
- 재귀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |