목록algorithm (33)
connecting the dots
문제 www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 벽 세개를 어떻게 채울 지 고민했던 문제. 이차원 배열에서 벽을 세울 모든 경우의 수만큼 .. 어떻게 해야 하나 싶었다. / 알고보니 평소 조합 함수를 세웠던 것과 매우! 비슷하게 cnt == 3 일 때의 기저조건을 세워주고 재귀함수를 구현하면 되는 거였다 ! 이렇게 하지 않고도 벽을 세울 수 있는 부분을 큐?같은 자료구조에 넣어두고 조합함수를 돌려도 된다. 코드 import java.util.*; import ..
문제 www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 풀이 처음에 조금 헤맸지만, 알고보니 쉬운 문제였다. BFS를 사용해 연결된 연합을 찾고 visited 처리해주어서 다시 방문하지 않도록 한다. 연합을 찾을 때마다 해당 맵을 update 해준다! 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.u..
문제 www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.StringTokenizer; public class Main { static Buffer..
문제 풀이 블록을 가로지르지 않고 주어진 상점까지의 최소 거리를 모두 더해주어야 하는 문제 나의 풀이 방법은 다음과 같다 Store라는 클래스를 만들어주고 location과 direction을 저장할 수 있도록 했다 동근이의 direction을 기준으로 왼쪽/오른쪽 direction을 리턴해주는 left/right 함수를 만들었다 동근이의 direction에 따라 거리를 구한다 사실 direction을 찾아준 거 외에는 모든 경우의 수를 따져서 푼 문제 / 이렇게 가장 바깥쪽만 사용하는 문제는 직선이라고 생각하고 배열로 풀면 더 간단할 수 있음을 알게 됐다 / 다시 풀어봐야겠다 코드 import java.util.*; import java.io.*; public class Main { static Buf..