자바147 백준 6191 Cows on Skates 자바 BFS, 역추적 문제 이번 역추적은 x, y 좌표가 있는 역추적으로.. 숨바꼭질 4에서 사용했던 1차원 배열로는 안된다. 이리 저리 고민하다가.. 2차원배열로 역추적하면 되겠네 생각해지만.. 더 쉽고 빠른 방법을 갈구하다가 Map과 String으로 저장해야겠다는 생각을 했다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayDeque; import java.util.ArrayList; .. 2022. 12. 29. 백준 12235 Data Packing (Large) 자바 그리디, 정렬 문제 디스크에 파일을 넣을 때 최대 2개씩넣을 수 있지만, 디스크의 크기를 넘을 수 없다. 나는 정렬을 한 뒤 덱에 내림차순으로 넣어주었다. 덱에서 First + Last가 디스크의 용량을 넘지 않는다면, 둘을 빼주고 count++을 해줬다. 마지막으로 덱이 사이즈가 1일때에는 덱을 Poll하고 count++을 해주었다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayD.. 2022. 12. 29. 백준 1270 전쟁 - 땅따먹기 자바 Hash Map 또는 보이어 - 무어 다수결 투표 알고리즘 문제 문제 자체로는 쉽다. 하지만, 자바를 사용하는 유저들은 상당히 어렵다. 이유는 메모리 초과때문이다. Main이 아닌 함수를 통해 구현할 경우 Garbage Collector가 메모리를 회수해 메모리가 부족한 경우는 나지 않지만. 대부분 PS를 하시는 분들이라면 Main에 작성하기에 GC를 수동으로 입력해 메모리를 회수해야한다. 메모리 초과가 날 경우 1. 함수를 구현해 시스템이 자동으로 메모리를 회수하게끔 한다. 2. Main안에서 수동으로 GC를 돌린다. 나는 2번을 선택했다. PS하로 왔다가.. GC공부하고 갑니다~ 코드는 밑에더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.. 2022. 12. 27. 백준 7696 반복하지 않는 수 자바 브루트 포스 문제 같은 숫자를 2번 쓸 경우 횟수를 세지는 않는다. 11, 22, 101, 909, 112, 100 등과 같은게 예시이다. 문제 자체는 난이도가 높지않다. N이 백만까지이므로 int형으로 백만까지 선언해 모두 구해놔야 시간초과를 막을 수 있다. 하지만 자바의 경우 메모리초과가 나는걸 쉽게 볼 수 있는데.. 메모리 제한 자체가 너무적다. 그래서 중간중간 수동으로 System.gc()를 해야한다. 만약 함수를 통해 수가 중복되는지 판단하는 것을 구현했다면, 메모리 초과 걱정은 하지않아도 된다. 함수가 종료되면 메모리를 자동으로 회수하기 때문이다. 시간 초과가 날 경우 에라토스테네스의 체 처럼 모든 경우의 수를 다구하고, 입력을 받아 실행하라. 메모리 초과가 날 경우 N에서 수 중복을 판단하는.. 2022. 12. 27. 백준 20310 타노스 자바 그리디 문제 0과 1을 각각 절반씩 날려 사전순으로 가장 빠른 문자열을 구하라. 사전순이므로 그리디가 분명하다. 해결 방법은 다음과 같다. 0이 1보다 앞에오면 사전순으로 빠르다. 0과 1의 개수를 세어준뒤 0이나오면 문자열에 먼저 추가해준다. 1이 나오면 절반의 개수가 되기전까지는 무시하고 그 뒤에 추가해준다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; pu.. 2022. 12. 27. 백준 14402 야근 자바 HashMap 문제 야근이 잦은 회사에서 야근을 한사람을 세보자. 출근을 한경우 Map에 + 1을 해준다. 퇴근을 한 경우 Map에 - 1을 해준다. 여기서 Map에 벨류값이 0이라면 -1을 해주지않고 count변수에 + 1을 해준다. 이후 count 와 Map의 벨류값을 모두 더해주면 야근을 했던 사람들을 모두 셀수있다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; impo.. 2022. 12. 27. 백준 2146 다리 만들기 자바 BFS 문제 섬과 섬들 사이에서 최소한으로 갈 수 있는 다리를 만들려고 하는 문제이다. 먼저 섬에 번호를 DFS를 통해 부여 해준다. 각각 부여된 번호를 for문을 통해 한개씩 돌려준다. 1번에서 2 또는 3으로 가는 가장 가까운 거리를 변수에 저장해준다. 2번에서 1또는 3으로 가는 가장 가까운 거리를 변수에 저장해준다. .... 반복해주게 되면 각 섬들중 가장 가까운 거리를 알수있다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamW.. 2022. 12. 25. 백준 2548 대표 자연수 자바 그리디, 정렬 문제 대표 자연수란 원소의와 대표 자연수의 절대값의 합이 최소인 자연수를 의미하며, 문제에서는 절대값의 합이 같다면 가장 낮은 자연수를 출력한다. N은 2만, 최대 자연수는 1만까지로 N^2풀이를 할경우 2억번의 연산으로 시간초과가 난다. 하지만 자바는 시간 보너스의 개념으로 들어가는지, TC가 부족한건지 시간초과가 나지는 않는다. 그렇다면 정상적으로 시간초과가 날 때 우리는 어떻게 해결해야 할까. 답은 아주 간단하다. 정렬 후 중간값을 출력하면된다. 각 원소들의 절댓값의 차의 합은 결국 중간값으로 집결되기 때문이다. 코드는 밑에 더보기를 클릭하시면 됩니다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import j.. 2022. 12. 22. 백준 15720 카우버거 자바 그리디, 구현 문제 카우버거에서 할인율을 계산하지 못해 우리가 해줘야 한다. 세트 할인이 적용되기 전 가격 세트 할인이 적용된 후 최소 가격을 출력하라. 세트 할인에서 최소 가격은 각각 햄버거 사이드 메뉴 음료가 최대치일때 세트할인을 적용시키면 최소가격이 나오는 걸 쉽게 알 수 있다. 이제 남은건 구현이지만, 생각보다 많았다. 더보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collec.. 2022. 12. 22. 이전 1 2 3 4 5 6 ··· 17 다음