본문 바로가기

구름톤20

[구름톤 챌린지, Java] 20일차, 연결 요소 제거하기(BFS, 구현) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. N × N 배열에는 알파벳 또는 '.' 가 적혀있습니다. 2. 상하좌우 인접한 칸에 같은 알파벳이 존재하면 두 칸은 연결되어 있다고 판단하며, 이 집합을 연결 요소라고 합니다. 3. Q번 아래와 같은 과정을 진행합니다. 4. Q번 과정을 실행한 이후에 N × N 배열의 값들을 결과로 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. Q번 동안 문제에서 설명한 과정을 BFS을 통해서 진행합니다. 3. Q번 진행한 이후 배열의 값들을 결과로 출력합니다. 구현 Q번 동안 문제에 설명한 내용의 과정을 진행합니다. N : 3 K : 2 ... 2023. 9. 8.
[구름톤 챌린지, Java] 19일차, 대체 경로(다익스트라) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. N개의 도시가 존재하며, 각 도시롤 연결하는 M개의 양방향 도로가 존재합니다. 2. i일에는 i번째 도시가 공사로 인하여 폐쇄되면서, 해당 도시 관련 도로를 사용할 수 없습니다. 3. 플레이어가 S도시에서 E도시에 도착하지 못하거나 공사 중일 때에는 -1을 결과로 출력합니다. 4. 플레이어가 S도시에서 E도시에 도착할 때 방문하는 최소 도시 개수를 결과로 출력합니다. 5. 결과를 출력할 때에는 각 도시가 공사중일 때 최소 도시 개수를 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. 1 ~ N번 도시가 공사 중일 때 S도시에서 E.. 2023. 9. 8.
[구름톤 챌린지, Java] 18일차, 중첩 점(누적합) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. 길이가 N인 정사각형이 존재하며, 1 × 1 크기의 정사각형으로 구분되어있습니다. 2. 반직선 (y, x)를 그리며, 해당 반직선은 (y, x)의 칸을 지납니다. 3. 반직선의 방향은 상하좌우만 가능하며, 같은 칸을 지나는 평행한 반직선은 서로 만나지 않는다. 4. 좌우 반직선과 상하 반직선의 중첩점이 생기는 개수를 결과로 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. 좌우 반직선의 대한 누적합을 구한 뒤, 상하 반직선을 기준으로 중첩점을 구합니다. 3. 구한 중첩점의 개수를 결과로 출력합니다. 구현 이 문제를 접근할 때 각각.. 2023. 9. 7.
[구름톤 챌린지, Java] 17일차, 그래프의 밀집도(BFS) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. N개의 컴퓨터 존재하며, 각 컴퓨터를 양방향 연결하는 M개의 회선이 존재합니다. 2. 같은 컴퓨터 쌍을 연결하는 회선은 최대 1개입니다. 3. 컴퓨터가 회선으로 연결되어 그룹을 컴포넌트라고 합니다. 4. 컴포넌트에는 밀도가 존재하며, 회선의 수 ÷ 컴퓨터의 수 입니다. 5. 밀도가 가장 높은 컴포넌트를 결과로 출력합니다. 6. 밀도가 같으면 문제의 조건에 맞게 결과를 반환합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. 컴포넌트에 속하지 않는 컴퓨터를 기준으로 BFS을 진행하여 컴포넌트를 구성합니다. 3. 탐색이 종료되었을 때 조건에.. 2023. 9. 5.
[구름톤 챌린지, Java] 16일차, 연합(BFS) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. 바다 위에는 N개의 섬이 존재합니다. 2. 섬을 연결하는 다리는 정방향, 역방향 최대 2개이며, 모든 다리는 단방향입니다. 3. 섬이 연합을 할 때에는 정방향, 역방향 다리가 2개가 존재해야 합니다. 4. a와 b가 연합이고, b와 c가 연합이면 a와 c는 연합입니다. 5. 모든 연합의 개수를 결과로 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. 연합이 속하지 않은 각 섬을 BFS를 이용하여 연합을 구성합니다. 3. 탐색이 종료되었을 때 연합의 개수를 결과로 출력합니다. 구현 BFS을 진행할 때 3가지 경우가 존재합니다. 서로.. 2023. 9. 5.
[구름톤 챌린지, Java] 15일차, 과일 구매(그리드) 문제 링크 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 접근 방법 이 문제에 핵심 1. 종류가 N개인 과일이 존재하며, 각 과일에 가격과 포만감이 존재합니다. 2. 과일을 조각내서 구매할 수 있으며, 조각되었을 때 포만감은 "포만감 ÷ 가격" 입니다. 3. 플레이어는 K만큼 돈을 가지고 있을 때 최대 포만감을 결과로 출력합니다. 4. 가격은 항상 포만감의 배수입니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. 모든 과일을 가격 1로 조각 내었을 때, 포만감이 큰 값부터 구매를 진행합니다. 3. 구매가 종료되었을 때 얻은 포만감을 결과로 출력합니다. 구현 모든 과일을 가격 1로 조각 내었을 때 포만감을 구합니다. 예를 들어.. 2023. 9. 1.