2024.05.07 일 오늘 날짜로 백준 500문제를 풀었다. 딱히 문제 수가 중요하다기 보다는 그냥 기록용으로 남겨두고 싶은 의미가 더 크다. 문제 수와 랭크는 실력과 상관없다는 것을 또 한번 느끼고 간다. 일단 나부터가 실력이 그렇게 좋지 못하기 때문에 더더욱 상관없다고 느껴지는 것 같다. 제대로 알고리즘을 준비했을 때부터 약 6개월 정도가 지난 시점인데, 알고리즘을 준비하기 전에도 이미 풀어 놓은 문제들까지 포함해서 500문제이기 때문에 그 때부터 푼 문제로는 아마 500문제에서 조금 부족할 것 같다. 개월 수를 세보니 생각보다 꽤 지났구나 싶다.500 문제를 풀었을 때 상상으로는 어느정도 문제는 다 풀 수 있겠지? 싶었다. 현실은 500 문제를 풀었어도 여전히 알고리즘은 어렵고, 코테도 쉽지 않다..
문제아기 상어가 성장해 청소년 상어가 되었다. 4×4크기의 공간이 있고, 크기가 1×1인 정사각형 칸으로 나누어져 있다. 공간의 각 칸은 (x, y)와 같이 표현하며, x는 행의 번호, y는 열의 번호이다. 한 칸에는 물고기가 한 마리 존재한다. 각 물고기는 번호와 방향을 가지고 있다. 번호는 1보다 크거나 같고, 16보다 작거나 같은 자연수이며, 두 물고기가 같은 번호를 갖는 경우는 없다. 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 오늘은 청소년 상어가 이 공간에 들어가 물고기를 먹으려고 한다. 청소년 상어는 (0, 0)에 있는 물고기를 먹고, (0, 0)에 들어가게 된다. 상어의 방향은 (0, 0)에 있던 물고기의 방향과 같다. 이후 물고기가 이동한다. 물고기는 번호가 작은 물고기부터 순서..
명시적으로 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이 아니며, 절댓값은..