명시적으로 GC를 호출하는 방법들이 2가지 있는데 아래와 같다. 1. System.gc() 2. null 그중 System.gc() 를 사용하면 엄청난 성능 저하를 일으킨다고 하는데 실제로 얼마나 성능이 떨어지는지 확인해 보자. 코드는 간단하다. 맨 처음 현재 시스템 시간을 출력해 준다. ValueAdder라는 클래스를 배열로 선언해 준 뒤, 100번 반복을 하면서 a 배열 10개에 새 인스턴스를 할당해 준다. 그리고 끝나는 시스템 시간을 출력하고 끝나는 시간에서 시작 시간을 빼고 출력한다. 현재 System.gc 는 주석 처리 되어 있는 상태. 실행해 보자. 총 77ms가 걸렸다. 기존 참조값과 변경 후 참조 값은 그냥 변경되었다는 것을 눈으로 확인하기 위해 출력했다. 이제 System.gc() 주석을..
문제N(1 ≤ N ≤ 100)개의 수로 이루어진 1차원 배열이 있다. 이 배열에서 M(1 ≤ M ≤ ⌈(N/2)⌉)개의 구간을 선택해서, 구간에 속한 수들의 총 합이 최대가 되도록 하려 한다. 단, 다음의 조건들이 만족되어야 한다.각 구간은 한 개 이상의 연속된 수들로 이루어진다.서로 다른 두 구간끼리 겹쳐있거나 인접해 있어서는 안 된다.정확히 M개의 구간이 있어야 한다. M개 미만이어서는 안 된다.N개의 수들이 주어졌을 때, 답을 구하는 프로그램을 작성하시오. 입력첫째 줄에 두 정수 N, M이 주어진다. 다음 N개의 줄에는 배열을 이루는 수들이 차례로 주어진다. 배열을 이루는 수들은 -32768 이상 32767 이하의 정수이다. 출력첫째 줄에 구간에 속한 수들의 총 합의 최댓값을 출력한다. 문제 링크 ..
어느덧 2023년의 끝을 달려가고 있을 예정이었으나... 적다 보니 추가되고 추가되어서 글이 뒤로 밀려 2024년의 4월이 되었다. (결국 글이 너무 지저분해져서 갈아엎었다) 2024년 하고도 4개월이 더 지났지만 이왕 작성한 거 그냥 올려본다 2023년을 한 문장으로 나타내보자면 틀을 많이 깬 해 라고 할 수 있을 것 같다. 코드스테이츠를 수료하고.. 22년도 12에 시작하여 23년도 06월에 코드스테이츠를 수료하였다. 수료했을 때만 해도 아 나 정도면 네카라쿠배 등의 큰 기업은 아니어도 괜찮은 기업은 갈 수 있겠지 라는 생각으로 취업 준비를 했던 것 같다. 자만이 가득했다.. 그리고 수료하자마자 프로젝트의 개수가 부족하다는 생각이 들어 사이드 프로젝트를 시작했다. 계획을 변경하다 - 1 그렇게 사이드..
문제 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오. 세준이는 한 걸음에 좌표 1칸씩 가며, 책의 원래 위치는 정수 좌표이다. 책을 모두 제자리에 놔둔 후에는 다시 0으로 돌아올 필요는 없다. 그리고 세준이는 한 번에 최대 M권의 책을 들 수 있다. 입력 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 책의 위치는 0이 아니며, 절댓값은..
문제 V개의 마을와 E개의 도로로 구성되어 있는 도시가 있다. 도로는 마을과 마을 사이에 놓여 있으며, 일방 통행 도로이다. 마을에는 편의상 1번부터 V번까지 번호가 매겨져 있다고 하자. 당신은 도로를 따라 운동을 하기 위한 경로를 찾으려고 한다. 운동을 한 후에는 다시 시작점으로 돌아오는 것이 좋기 때문에, 우리는 사이클을 찾기를 원한다. 단, 당신은 운동을 매우 귀찮아하므로, 사이클을 이루는 도로의 길이의 합이 최소가 되도록 찾으려고 한다. 도로의 정보가 주어졌을 때, 도로의 길이의 합이 가장 작은 사이클을 찾는 프로그램을 작성하시오. 두 마을을 왕복하는 경우도 사이클에 포함됨에 주의한다. 입력 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) ..
문제 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에는 불이 붙지 않는다. 상근이는 동서남북 인접한 칸으로 이동할 수 있으며, 1초가 걸린다. 상근이는 벽을 통과할 수 없고, 불이 옮겨진 칸 또는 이제 불이 붙으려는 칸으로 이동할 수 없다. 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다. 빌딩의 지도가 주어졌을 때, 얼마나 빨리 빌딩을 탈출할 수 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스는 최대 100개이다. 각 테스트 케이스의 첫째 줄에는 빌딩 지도의 너비와 높이 w와 h가 주어진다..