알고리즘 풀이/백준

규칙 찾으면 끝 N세대의 드래곤 커브는 N-1세대커브의 역순의 막대기들을 뽑아서 그리는데 화살표 방향이 index를 +1한 방향으로 수정한 후에 그리면 된다 드래곤 커브를 세대별로 전부 모아서 그려도 되고 나같은 경우는 그냥 1세대씩 그리고 모으고 그리고 모으고 했음 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.LinkedList; import java.util.List; import ja..
어렵게 생각한 부분이 있는데.. 문제에서 주어진 예제에서 0(0)인 경우에 0이 나오는 것을 보고 (0)이 나오면 앞에 K(Q)형태에서 K값이 어떤 값이든 0이 나오는 것으로 착각했다.. 이것 때문에 경우의 수 엄청 늘어나는 것 같아서 index를 i=1부터 시작하고 i
#2 문제를 접근하는 방식 자체가 신박(내 기준)했고 진짜 깔끔했다 일단 문제에서 가로세로 width와 height를 준 이유가 있었음 일단 2차원 boolean배열 map을 선언 후에 map의 검은 부분을 true로 색칠해줌 그 다음에는 map의 column마다 세워진 block덩어리들이 오른쪽으로 레이져를 쏜다고 가정을 하면 됨 레이저를 쏠 때 바로 막히는 경우와 빈 공간이 존재해서 레이저가 나가다가 레이저가 다른 block덩어리에 막히는 경우가 빗물이 채워질 수 있는 경우인 것임 또 다른 경우는 빈 공간은 존재하지만 block덩어리에 막히지 못하는 경우임 이 경우는 빗물이 채워지지 않음 풀이법 자체는 굉장히 깔끔하고 명쾌해서 코드로만 옮기면 되는데 늘 그렇듯 2차원배열의 index는 조심해줘야함 이..
솔직히 진짜 ㅈㄴ어려웠음.. 이게 실버2인게 말도 안됨 이거 뭔가 문제 자체를 이해하는 것은 어려운 것이 아닌데 이상하게 명쾌한 풀이법이 도저히 굴려봐도 안나왔음 일단 태그부터 정리하자면 자료구조, 스택인데 이거는 쓸 필요도 없고 스택 쓰면 for문 2배로 돌려야함 그렇다고 구현이라기엔 뭔가.. 구현하는 것은 아닌 것 같고 청소년들 보라고 만들어 놓은 수학 퍼즐 알고리즘 버젼으로 갖다 놓은 것 같음.. 태그 - 시뮬레이션 첫번째 틀렸습니다 아예 풀이 자체를 제대로 못했음 일단 풀이법 봤는데도 왼쪽에서 top으로 오른쪽에서 top으로라는 것이 도대체 무슨 의미인가 했더니 세모꼴의 산모양의 case의 공식을 적용해주면 문제에서 주어지는 창고 다각형의 어떠한 case라도 전부 포괄하여 다각형의 면적을 구할 수..
진법문제는 브론즈여도 자주 틀리는 것 같다.. 1. char형 교정 Line:25~28 char형문자 숫자로 변환 (A~Z일 경우와 숫자일 경우. 숫자일 경우도 c-'0'해줘야함) 2. index 역순으로 Line:23에서 인덱스 i 거꾸로 돌려야함 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 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStre..
이진탐색으로 풀기 보다 그냥 인덱스 두 개 지정해줘서 좁혀주는 문제..? 절대값을 활용한다는 개념 때문에 갱신된 최소값의 용액의 합이 음일경우 i를 ++해주고 양일 경우에는 j를 --한다는 개념이.. 이게 이진탐색이라기 보다는 다른 알고리즘의 문제 같음 태그보니까 두 포인터라는게 있었음.. 참고 : https://maivve.tistory.com/129 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; imp..
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으로 해주어야 한다는 것이다...
배게
'알고리즘 풀이/백준' 카테고리의 글 목록