silver BOJ 1654 : 랜선자르기 - C++ 로직 : 최적의 랜선 길이를 찾는 탐색을 이분탐색으로 하여 찾는다 주의 : 이분탐색을 할 때 항상 나누는 수인 mid가 0이되는 경우를 찾아 예외처리를 해주어야 한다 (본 문제 : N=1, M=1, input=1일 때 mid가 0이되므로 최초left를 1로 초기화)... silver이분탐색bojboj BOJ 2110 : 공유기 설치 - C++ 이분탐색 문제에 적응중 로직 집 사이간 간격에 따라 심을 수 있는 공유기 수 를 구하고 우리가 세우려는 C개 보다 크거나 같을 때 간격을 늘리면서 결국 C개의 공유기를 심을 수 있는 최대 거리를 구한다 이분탐색 구현시 주의 답을 기억하는 =(등호)가 붙는 방향은 앞으로 답이 될 수 있는 가능성이 있는 쪽에 붙여주어야 한다 left의 초기값을 0으로 하면 나누는 값인 mid가 0이될 수 있으니... silver이분탐색bojboj BOJ 2644 : 촌수계산 - C++ DFSsilverbojDFS BOJ 2447 : 별찍기 10 - C++ 원리 1) 일정 구역에서 항상 중간에 해당되는 부분은 ' '값을 가지도록 저장 (y와 x의 범위가 y+size/3 ~ y+size/3+size/3 x+size/3 ~ x+size/3+size/3 일 때 항상 ' '값을 가짐) 2) 가운데 부분을 제외하고 나머지 8부분에 대해 재귀 수행 다른 풀이는 ? : ' ' 값을 가지는 좌표들의 특징을 찾아서 해결함 (y/size%3 == 1 && x/s... 재귀silverbojboj BOJ 14888 : 연산자 끼워넣기 - C++ 핵심 : 백트래킹을 이용해 연산자에 따라 모든 경우의 수를 수행... silverboj백트래킹boj BOJ 15654 : N과M (5) - C++ 수가 정해져 있기 때문에 save 변수를 쓰는데, 사전순 증가로 출력해야 하기 때문에 정렬하려고 vector<int> save로 선언 next_permutation()을 2중으로 써야함 1) 전체 N개에서 M개를 뽑은 숫자들 구하는 do~while 2) 뽑은 M개 숫자에 대해 다시 경우의 수를 구하는 do~while vector<vector<int>> ans에 대해 오름차순 정렬하면 요소별로... bojsilver백트래킹boj Oracle Certfied Java Programer, Silver SE8 인증 시험 경험 2018년 1월 7일(일) Oracle Centefied Java Programer, Silver SE8을 통해 자격 인정(Oracle Java Silver) 시험에 합격하여 일기 쓰기 모르는 게 없을 때까지 읽기(약 3주 정도) 약 32500엔(시험비용: 29000엔+참고서: 3500엔) 약 5일 흑본의 참고서를 철저히 공부하면 꼭 합격할 수 있을 거야!저는 PHP의 설치 경험만 있기 때문... silverJavaoraclejava BOJ 1992 : 쿼드트리 - C++ (char[][] 널문자) 깨달음 char[][] 배열로 문자열을 입력받을 때에는 반드시 +1만큼 더 크게 해야한다 --> 마지막에 null문자가 삽입되기 때문에!!! 안그러면 참조가 벗어나서 BOJ에서 메모리 초과라고 뜬다! 주의할 점 ! : 기존에 입력을 이렇게 받았더니 에디터에서는 잘돌아가는데, BOJ 제출시 메모리 초과가 떴다. 이유는??? char[][] 사용시 마지막에 널문자를 고려해야 해서 원하는 크기보다... 재귀silverbojboj BOJ 2805 : 나무 자르기 - C++ 로직 나무의 최대 길이를 구한다 이분탐색으로 최적의 나무 높이를 구한다 주의 합을 구하는 tot변수는 반드시 long long 혹은 그 이상이어야 한다... silver이분탐색bojboj BOJ 1182 : 부분수열의 합 - C++ 사실 백트래킹 보다는 재귀를 통한 완전탐색의 느낌 --> 다시 돌아와서 새로운 경우를 찾지는 않고 base condition에 도달할 때 까지 쭉 가는 형식이기 때문 주의할 점 1) 일단 모든 요소는 순회해야 한다 --> 그렇지 않으면 S가 0일때 경우 세지도 않고 바로 종료함 2) isused[] 불필요 ! isused[]는 다시 돌아와서 사용의 여부에 따라 새로운 경우의 수를 돌게 하기 ... 재귀silverboj백트래킹boj BOJ 1074 : Z - C++ 각 범위를 depth로 두고 타고 들어가서 차례대로 수행하게 하였음 모든 범위에 대해 수행하므로 0.5초 시간동안 수행할 수 없음 시간 초과 해결 : 모든 사분면에 대해 find하지 않고, 검사해서 안에 없으면 해당 size*size만큼 더하기 로직 1) 현재 좌표에 대해 size만큼의 사각형 범위 안에 r,c가 있는지 검사 2-1) 있다면, size가 1이 될 때 까지 찾아 들어간다 2-2... 재귀silverbojboj BOJ 2529 : 부등호 - C++ 로직 : 조건에 맞게 백트래킹을 수행하면 된다 (입력이 10보다 작기때문에 충분히 가능)... silverboj백트래킹boj
BOJ 1654 : 랜선자르기 - C++ 로직 : 최적의 랜선 길이를 찾는 탐색을 이분탐색으로 하여 찾는다 주의 : 이분탐색을 할 때 항상 나누는 수인 mid가 0이되는 경우를 찾아 예외처리를 해주어야 한다 (본 문제 : N=1, M=1, input=1일 때 mid가 0이되므로 최초left를 1로 초기화)... silver이분탐색bojboj BOJ 2110 : 공유기 설치 - C++ 이분탐색 문제에 적응중 로직 집 사이간 간격에 따라 심을 수 있는 공유기 수 를 구하고 우리가 세우려는 C개 보다 크거나 같을 때 간격을 늘리면서 결국 C개의 공유기를 심을 수 있는 최대 거리를 구한다 이분탐색 구현시 주의 답을 기억하는 =(등호)가 붙는 방향은 앞으로 답이 될 수 있는 가능성이 있는 쪽에 붙여주어야 한다 left의 초기값을 0으로 하면 나누는 값인 mid가 0이될 수 있으니... silver이분탐색bojboj BOJ 2644 : 촌수계산 - C++ DFSsilverbojDFS BOJ 2447 : 별찍기 10 - C++ 원리 1) 일정 구역에서 항상 중간에 해당되는 부분은 ' '값을 가지도록 저장 (y와 x의 범위가 y+size/3 ~ y+size/3+size/3 x+size/3 ~ x+size/3+size/3 일 때 항상 ' '값을 가짐) 2) 가운데 부분을 제외하고 나머지 8부분에 대해 재귀 수행 다른 풀이는 ? : ' ' 값을 가지는 좌표들의 특징을 찾아서 해결함 (y/size%3 == 1 && x/s... 재귀silverbojboj BOJ 14888 : 연산자 끼워넣기 - C++ 핵심 : 백트래킹을 이용해 연산자에 따라 모든 경우의 수를 수행... silverboj백트래킹boj BOJ 15654 : N과M (5) - C++ 수가 정해져 있기 때문에 save 변수를 쓰는데, 사전순 증가로 출력해야 하기 때문에 정렬하려고 vector<int> save로 선언 next_permutation()을 2중으로 써야함 1) 전체 N개에서 M개를 뽑은 숫자들 구하는 do~while 2) 뽑은 M개 숫자에 대해 다시 경우의 수를 구하는 do~while vector<vector<int>> ans에 대해 오름차순 정렬하면 요소별로... bojsilver백트래킹boj Oracle Certfied Java Programer, Silver SE8 인증 시험 경험 2018년 1월 7일(일) Oracle Centefied Java Programer, Silver SE8을 통해 자격 인정(Oracle Java Silver) 시험에 합격하여 일기 쓰기 모르는 게 없을 때까지 읽기(약 3주 정도) 약 32500엔(시험비용: 29000엔+참고서: 3500엔) 약 5일 흑본의 참고서를 철저히 공부하면 꼭 합격할 수 있을 거야!저는 PHP의 설치 경험만 있기 때문... silverJavaoraclejava BOJ 1992 : 쿼드트리 - C++ (char[][] 널문자) 깨달음 char[][] 배열로 문자열을 입력받을 때에는 반드시 +1만큼 더 크게 해야한다 --> 마지막에 null문자가 삽입되기 때문에!!! 안그러면 참조가 벗어나서 BOJ에서 메모리 초과라고 뜬다! 주의할 점 ! : 기존에 입력을 이렇게 받았더니 에디터에서는 잘돌아가는데, BOJ 제출시 메모리 초과가 떴다. 이유는??? char[][] 사용시 마지막에 널문자를 고려해야 해서 원하는 크기보다... 재귀silverbojboj BOJ 2805 : 나무 자르기 - C++ 로직 나무의 최대 길이를 구한다 이분탐색으로 최적의 나무 높이를 구한다 주의 합을 구하는 tot변수는 반드시 long long 혹은 그 이상이어야 한다... silver이분탐색bojboj BOJ 1182 : 부분수열의 합 - C++ 사실 백트래킹 보다는 재귀를 통한 완전탐색의 느낌 --> 다시 돌아와서 새로운 경우를 찾지는 않고 base condition에 도달할 때 까지 쭉 가는 형식이기 때문 주의할 점 1) 일단 모든 요소는 순회해야 한다 --> 그렇지 않으면 S가 0일때 경우 세지도 않고 바로 종료함 2) isused[] 불필요 ! isused[]는 다시 돌아와서 사용의 여부에 따라 새로운 경우의 수를 돌게 하기 ... 재귀silverboj백트래킹boj BOJ 1074 : Z - C++ 각 범위를 depth로 두고 타고 들어가서 차례대로 수행하게 하였음 모든 범위에 대해 수행하므로 0.5초 시간동안 수행할 수 없음 시간 초과 해결 : 모든 사분면에 대해 find하지 않고, 검사해서 안에 없으면 해당 size*size만큼 더하기 로직 1) 현재 좌표에 대해 size만큼의 사각형 범위 안에 r,c가 있는지 검사 2-1) 있다면, size가 1이 될 때 까지 찾아 들어간다 2-2... 재귀silverbojboj BOJ 2529 : 부등호 - C++ 로직 : 조건에 맞게 백트래킹을 수행하면 된다 (입력이 10보다 작기때문에 충분히 가능)... silverboj백트래킹boj