2021/10

Line:26 left값 초기화를 budget[0]으로 해줬음 5 10 10 10 10 10 49 입력하면 9가 나와야 하는데 0이 출력됨 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.OutputStreamWrit..
#2 처음 시작할 때 공유기 1개 박고 시작(count = 1로 시작) 다음 공유기 좌표인 nextCoord 변수를 활용하여 문제에서 익힌대로 해결함 솔직히 좀 어려웠다.. 문제 이해가 안됐음 이진탐색이라는 태그를 알고 풀어도 안풀림 결국 이진탐색에서 기준으로 잡을 값을 무엇으로 놓느냐인데 문제에서 요구하는 집과 집 사이의 최대값이 대체 어떻게 설정해야 하는지.. 다른 풀이를 보고 나서 이해함 아예 풀이 시작부터 그 집과 집 사이의 거리값을 지정해놓고 현재 지점(공유기를 설치한 집 중에서 가장 좌표값이 낮은 부분)에서 그 거리값을 더한 부분 Line:34 nextModem이라는 변수값인데 이것이 의미하는 바는 현재 지점에서 그 거리값에서 멀어진 좌표라는 의미인데 반드시 이 좌표에 집이 있을 필요는 절대 ..
수행 시간 1328ms -> 928ms (이진탐색 -> 해시셋) 이게 .. 이진탐색은 Arrays.sort() 메서드로 정렬을 한번 해줘야 하고 원소 1개의 탐색 시간이 o(log2(N))이기 때문에 HashSet보다 더 오래 걸리는듯 HashSet은 정렬 필요 없고 탐색 시간 o(1)임 근데 시간이 dramatically하게 차이나는 것은 아닌듯.. 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 import java.io.BufferedReader; import java.io.BufferedWriter; import..
#2 point (이것 때문에 승률이 20%에 머무르는 것임) 1. left값은 0이 아닌 1이어야만한다 2. left right res의 자료형을 long으로 선언해주어야한다. 처음 시작할 때 min이 0, max가 2^31 -1 정도라고 치면 min = (0 + 2^31-1) / 2 + 1 max = 2^31-1 이 되어서 min + max 값이 int범위를 초과할 수 있습니다. 출처 : https://www.acmicpc.net/board/view/6449 이게 2^31이 최대값이니까 당연히 int형이 모든 수를 담을 수 있을 것이라고 생각했는데 mid = (left+right)/2하는 과정에서의 (left+right)부분에서 int형의 최대값을 초과하기 때문에 long으로 해주어야 한다는 것이다...
틀렸습니다. 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에서 나무 높이들 입력해줄 때 최대값을 갱신시켜주..
오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다. 예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 처리 B를 개선해 B'라는 처리를 한 결과, 처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다 flatMap() -> 기존의 요소를 새로운 요소로 대체한 스트림을 생성합니다. 기본형 스트림 (IntStream, LongStream, DoubleStream)은 오토박싱과 언박싱의 비효율이 제거됨 (String대신 IntStream을 쓰라는 말임) 숫자와 관련된 유용한 메서드가 Stream보다 더 많다고..
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..
#2 Line:7 int*int형을 곱하기전에 제발 둘 중 하나를 long형으로 바꿔줘야 한다고 일단 스스로는 못풀었음 이분탐색이 뭔지는 아는데 구현을 못함 이분탐색 한 10문제정도는 풀어놔야겠음 모든 변수들을 long으로 통일해줘야하고 Line:7의 right값(high값)을 도대체 뭘로 설정해주어아햐는가 맨처음에는 Integer.MAX_VALUE or Long.MAX_VALUE..? 이런거 써야되나 싶었음 진짜 그리고 Line:22부분에 answer=mid 이 부분도 좀 헷갈림 if(mann) else if(man==n) 이렇게 조건문을 3개로 거는 것이 아니고 작은 경우를 제외한 나머지 조건을 else로 빼줘서 아래처럼 처리하면 lower bound를 알아서 찾아주는 메커니즘이 좀 신기했음.. 1 ..
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..
배게
'2021/10 글 목록 (2 Page)