본문 바로가기
반응형

전체 글101

[ 알고리즘 ] 코딩 SWEA 5653 - 줄기세포 배양.java SWEA 5653 - 줄기세포 배양 * 자바로 구현 * 줄기세포 생명력이라는 수치를 가지고 있음. * 초기 상태 비활성. 수치가 x인 세포는 x 시간 동안 비활성 * x 시간이 지나면 활성. 세포가 죽어도 소멸이 아닌 남아있음 * 활성화된 줄기세포는 첫 1시간 동안 상하좌우로 번식. * 번식된 세포는 비활성. * 번식하려는 곳에 2개 이상의 세포가 있다면 생명력 수치가 높은 세포가 혼자 차지. ​* 배양용기 크기는 무한함. * K 시간 후 살아있는 줄기세포( 비활성 + 활성)의 총개수를 구하라. * 우선순위 큐와 ArrayList를 이용해서 구현하면 쉽고(...?) 빠르게 구현할 수 있다. * 근데 그런 생각을 못 해서.. ArrayList와 Collection 배열의 정렬을 이용해서 구현했다. * 시뮬.. 2020. 9. 5.
[ 알고리즘 ] 코딩 SWEA 1251 - 하나로.java SWEA 1251 - 하나로 * 자바로 구현 * 주어진 모든 섬을 하나로 연결하자. * 단, 세율E, 길이L의 비용이 발생 * 비용 : E*L^2 * 초기에 주어지는 간선가중치 없음. * 리스트, 우선순위 큐, 프림 알고리즘을 이용해 MST를 찾았다. * 각 정점마다 최소값만을 찾아서 추가 추가 하는거면 꼭 이렇게 했어야 했나 싶기도.. ** 인접행렬, 크루스칼을 이용해서도 구현할 수 있다 ** public class SWEA_1251_Hanaro { static class Island { // 섬 위치 정보 int y, x; public Island(int y, int x) { this.y = y; this.x = x; } } // 섬간에 이어진 간선 정보 static class Edge impleme.. 2020. 9. 5.
[ 알고리즘 ] 코딩 SWEA 1767 - 프로세서 연결하기.java SWEA 1767 - 프로세서 연결하기 * 자바로 구현 * N x N개의 셀이있다. * 각 셀에는 1개의 코어 혹은 1개의 전선이 올 수 있다. * N+1의 가장자리에는 전원이 흐르고있다. * 코어와 전선을 연결하는 전선은 직선만 가능하다. * 전선은 절대 교차해서는 안된다. * 초기 코어의 위치가 주어진다. * (가장자리에 맞닿아있는 코어는 전원이 들어온 것으로 판단한다) * 최대한 많은 코어에 전원을 연결할 경우 전선 길이의 합은? * 여러 방법이 있다면 최소의 전선길이를 구하라. * 7 2020. 9. 5.
[ 알고리즘 ] 코딩 SWEA 3234 - 준환이의 양팔저울.java SWEA 3234 - 준환이의 양팔저울 * 자바로 구현 * N개의 무게추를 저울에 올리는 방법은 N! * 왼쪽에 올릴 것인지 오른쪽에 올리 것인지를 선택하면 2^N * N! * 이때 저울의 오른쪽이 왼쪽보다 무거우면 안된다. * 저울에 무게추를 올릴 수 있는 모든 경우의 수 * static 변수 생성하면 메모리 초과 발생. * 아래 코드에 더해서 위의 조건중에 N!*2^N을 이용해서 모든 추를 오른쪽에 놓아도 무겁지 않은 경우에 한해서 미리 계산해놓은 N!과 2^N을 이용하면 속도가 훨씬 많이 향상된다. * 아래 코드에 더해서 메모이제이션 기법을 적용하면 속도가 훨씬 향상된다. public class SWEA_3234_Two_Arm_Scale { static int total; public static .. 2020. 9. 5.
[ 알고리즘 ] 코딩 SWEA 7793 - 오 나의 여신님.java SWEA 7793 - 오 나의 여신님 * 자바로 구현 * 악마는 악마의 손아귀라는 스킬을 사용한다. * 악마의손아귀 : 매 초마다 상하좌우 인접해있는 영역을 부식시키며 확장 * 단 지은이라는 여신이 있는 공간은 피해를 입지않는다. * 수연이는 여신이 있는곳까지 가야한다! * NxM크기, 돌이 있는 곳은 갈 수없고, 부식되지않음. * 수연이 이동 동서남북 여신에게 가는 최소시간 구하기 * 2 2020. 9. 5.
[ 알고리즘 ] 코딩 SWEA 7699번 - 수지의 수지맞는 여행.java SWEA 7699번 - 수지의 수지맞는 여행​​ * 자바로 구현 * 1행, 1열로 시작해서 R행, C열까지 있으며, 총 R*C 칸으로 이루어져 있다. * 섬의 각 칸에는 알파벳이 적혀있다. 이 알파벳은 섬의 명물이고, 같은 알파벳은 같은 명물 * 자신이 있는 지점의 명물을 본 후 4방향(상, 하, 좌, 우) 중 한 방향으로 1칸 이동 후 다음 명물을 보는 행동을 반복 * 같은 명물을 2번 이상 가지 않게 해서 갈 수 있는 최대 경우의 수 * DFS를 이용해서 구현하는 것이 빠르다. * 처음에 BFS로 구현하려고 했다가 수렁에 빠져서 포기했다.... *** BFS로 구현하는 것은 가중치가 없는 그래프에서 최단경로를 구할 때!!! 빠르고 정확하고 쉽게 구할 수 있다!!! * A~Z까지 26가지의 경우를 한 .. 2020. 9. 5.
[ 알고리즘 ] 코딩 정보 올림피아드 1681 - 해밀턴 순환 회로.java 정보 올림피아드 1681 - 해밀턴 순환회로 * 자바로 구현 * 회사에서 출발하여 물건을 모두 배달하고 * 다시 회사로 돌아오는 최단경로를 구하자! * 1 2020. 9. 5.
[ 알고리즘 ] 코딩 정보 올림피아드 1733 - 오목.java 정보 올림피아드 - 1733 - 오목 * 자바로 구현 * 19개의 가로줄, 19개의 세로줄 * 연속적으로 5개의 알이 놓이면 승리 * (가로, 세로, 대각선) * 6개이상의 알이 놓이면 이긴것이 아님. 무조건 5개 * 바둑판의 상태를 보고 검은색과 흰색의 승패 여부를 판단. * 누가 이겼는지 출력, 비긴것도 출력 * 검은돌 - 1, 흰돌 -2, 빈자리 - 0 * 출력시 가장 왼쪽돌의 위치를 출력 * 세로로 5개일 경우 가장 위쪽의 바둑돌의 위치를 출력 * 뭔가 깔끔하게 짜는 방법은 없었을까.... 너무 무지막지하게 짠 것 같아 부끄럽다.. class Baduk_doll { int y, x, type;// type 1 = 검은돌, 2 = 흰돌 public Baduk_doll(int y, int x, int.. 2020. 9. 5.
[ 알고리즘 ] 코딩 정보 올림피아드 1863 - 종교.java 정보 올림피아드 1863 - 종교 * 자바로 구현 * 학교에는 n (0 < n ≤ 50,000)명의 학생이 있다. * 같은 종교를 가지는 사람들 끼리 짝을 짓도록 * 학생들이 가진 전체 종교의 수 구하기 * 서로소 집합을 이용해서 간단하게 구현 public class JO_1863_Religion { private static int[] parents; // 집합을 나타낼 배열 public static void main(String[] args) { JO_1863_Religion reli = new JO_1863_Religion(); reli.disjoint(); } /** 서로소 집합을 이용해보자*/ private void disjoint() { Scanner sc = new Scanner(System.. 2020. 9. 5.
반응형