알고리즘 풀이/백준

틀렸습니다. Line: 33의 wood변수(자른 나무들의 합)의 최대값은 N과 M의 최대값의 곱인 1,000,000 * 2,000,000,000가 될 수 있기 때문에 long으로 선언해주어야 한다 수행시간 1152ms -> 576ms 처음에 풀 때는 나무들 높이 배열(height)를 Arrays.sort(height) 해줬는데 그렇게 할 필요가 없음 어차피 모든 height를 전부 돌기 때문에 다만 그런 경우에는 이진탐색을 할 때 오른쪽 값인 int right의 초기값을 어떻게 설정해주느냐인데 기존에는 right = height[height.length-1]로 해줬지만 그럴 필요 없이 문제에서 제한사항에서 주어진 나무 높이의 최대값으로 하거나 Line:23에서 나무 높이들 입력해줄 때 최대값을 갱신시켜주..
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.Arrays; public class Main { private static BufferedReader br = new BufferedReader(new InputStreamReader(Sy..
double형 [n]자리까지 표기 -> String.format("%.[n]f, [double Value]); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java...
태그에는 이분탐색도 있는데 여기서 이분탐색을 어떻게 쓰라는건지는 일단 모르겠고 Line:18의 해당 구간의 장애물 개수를 구해준 정수형 배열 int[] obstacle는 따로 구할 필요가 없었다 최소값과 그 최소값을 가진 구간의 수 2개만 필요하기 때문에 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 import java.io.BufferedReader; import java.io.Buffe..
index를 맞춰줘야되는 문제라 좀 짜증났음 paper가 음수로 쓰인 경우만 신경써서 처리해주면 paper가 양인 경우는 손쉽게 풀 수 있음 덱으로 하는 경우에는 진짜 풍선 넘어가면서 시뮬레이션하면서 푸는 코드가 더러 있었는데 제한조건이 N(1 ≤ N ≤ 1,000)로 작아서 그렇지 (그냥 자료구조 써보라고 낸 문제니까) N진짜 커지면 그냥 터지는 코드임 무조건 index만 조절해줘서 풀어야함 simulating해주면 시간낭비 메모리낭비임 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ..
출력초과로 실패 나옴 bw.write("+\n") -> sb.append("+\n")로 수정함 bw.write로 출력을 처리할 경우에는 Line:27~29 부분에서 bufferedWriter를 flush하지 못하고 프로세스를 return으로 끝내버리는 코드가 있기 때문에 이것 때문에 출력초과가 난 것이 아닐까 싶음 이런 종류의 문제의 '출력 초과'는 '답이 없음'을 출력해야 하는데 답이 있는 것 처럼 출력하려고 했기 때문입니다. BufferedWriter 는 내부에 버퍼를 가지고 있으며, 버퍼에 어느 정도 데이터가 차면 비정기적으로 flush 를 실행합니다. n이 작은 데이터일 때 NO 를 출력해야 할 때는 flush 를 하기 전에 NO만 출력하고 프로그램이 종료되지만 n이 충분히 큰 데이터일 때 NO를..
Patter/ Matcher/ 정규식 공부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { private static..
(input=br.readLine())!=null (String.format("%.4f",e.getValue()*100.0/tot) (n번째 소수점까지 출력) 빼고는 뭐 없는 문제임 이게 왜 골드5 해시맵이랑 트리맵이나 비교해서 한번 더 공부하는 것이 더욱 이로움 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java...
비트마스크래서 풀었는데 그냥 브루트포스 비트마스크로 도대체 어떻게 푸는 건지 모르겠음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamW..
생각을 좀 많이함.. 결국 (0000) (1111) 둘 중 하나가 만들어질 때 각각 0, 1로 대체할 수 있으면 되는데, 가장 작은 단위의 (0000) (1111)은 Line:29의 if(N==2)문에서 처리가 되지만 여기서 압축된 후에 생기게 되는 좀 더 큰 단위의 (0000) (1111) 들은 어떻게 처리해야 할까? 계속 while문으로 돌려야되나? 생각하다가 Line:47에다가 Line:35의 checkCanComp() 메소드 사용하면 되는 것을 깨달았다 결국은.. 소괄호로 닫아줄 때 -> ) 로 닫아줄 때 그 res.substring(res.length()-6, res.length())가 (0000)이거나 (1111)일 경우 각각 0과 1로 교체시켜주면 재귀로 처리하기 때문에 가장 작은 단위의 비..
배게
'알고리즘 풀이/백준' 카테고리의 글 목록 (2 Page)