이분탐색 [BOJ] 1800번: 인터넷 설치 이분 탐색 + 다익스트라! 정답이 될 수 있는 값을 이분 탐색으로 정한 후, 검증위해 다익스트라를 활용 이분탐색 left는 정답이 될 수 있는 최솟값 0, right는 정답이 될 수 있는 최댓값으로 설정(입력 시, 미리 받아놓음) 중간값으로 다익스트라connectOK()를 돌림 유효하다면, 일단 답으로 설정하고 범위를 좀 더 작은값으로 해서 다시 검사 아니라면, 좀 더 큰 범위에서 다시 검사... 최단경로이분탐색이분탐색 수 찾기 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A... 파이썬1920번python이분탐색백준1920번 [코딩테스트 공부] 랜선 자르기 출처: 문제의 조건을 보게 되면, 시간 제한은 2초이고, K는 10000 이하로 제한이 되어있습니다. 따라서 O(N^2)까지의 복잡도가 허용된 상황이지만, 이 문제는 이분탐색으로 풀 수 밖에 없습니다. 이유는 다음과 같습니다. 데이터의 리스트만으로 특정한 정수 값을 도출해야합니다. 특정한 정수 값이 데이터 리스트 안에 존재하는 값이라는 보장이 존재하지 않기 때문에, 다른 방식으로 값을 도출해... 코딩테스트이분탐색이분탐색 [코딩테스트 공부] 공유기 설치 그런데 N이 200000까지 주어져있다. 따라서 NlogN의 복잡도로 구현을 해야함을 눈치챌 수 있다. 그런데, 일단 문제를 해석하는 것 부터가 쉽지않다. 이 문제를 읽고 내 심정은 정말 아래의 그림과 같았다... 정말 이 그림만큼 내 심정을 대변하는건 없을거다... 그래도 문제를 분석하다보면, 정말 의구심이 많이 든다. start, end를 조절하는 조건은 어떻게 해야함..? 결과적으로 나... 코딩테스트이분탐색이분탐색 [코딩테스트] 예산 출처: 해당 문제는 이전의 랜선 자르기, 나무 자르기 문제와 매우 비슷한 성격을 띄고있다. 따라서 이전의 두 문제를 참고하고 오면 도움이 될듯하다. 나무 자르기: 랜선 자르기: 참고로, 해당 문제도 이분 탐색을 이용해서 풀 예정이다. 사실 리스트에 없는 값을 탐색하는 유형에는 이분탐색만한게 없긴하지... 해당 문제도 나무 자르기와 별 다를게 없다. 오히려 풀이 자체가 똑같은 수준이니 설명은 ... 코딩테스트이분탐색이분탐색 [코딩테스트 공부] 나무 자르기 출처 : 일단 시간 제한은 1초이고, N은 100만까지 허용이 되어있는 상태입니다. 당연하게도 O(N^2)의 복잡도를 가지게 알고리즘을 구현하면 실패합니다. 따라서 이분탐색을 이용하여 문제를 해결해야합니다. 우리가 구하고자 하는 바부터 확실하게 하고 갑시다. 우리가 구해야하는 것은, 상근이가 적어도 M의 길이만큼 목재를 가져갈 수 있도록 하는 톱날의 최대 높이를 구하는게 관건입니다. 따라서,... 코딩테스트이분탐색이분탐색 [코딩테스트] List of Unique Numbers 당연히 O(N^2)의 복잡도는 사용하지 못하고, 선형으로 탐색하거나, 혹은 O(NlogN)의 복잡도로 해결해야한다는 뜻입니다. 위의 풀이는 O(NlogN)의 복잡도가 아니라, O(N^2logN) O(N2logN)의 복잡도를 가지고 있습니다. O(N^2) O(N2)의 복잡도도 허용이 되지 않는데 O(N^2logN) O(N2logN) 의 복잡도를 사용했으니 당연히 틀리겠죠? 저는 위의 문제를 선... 선형탐색수학이분탐색코딩테스트DPDP 🏃♀️[프로그래머스] 징검다리 건너기 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. "라이언" 선생님은 "니니즈 친구들"이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 ... maxJavaScript2019 카카오 개발자 겨울 인턴십징검다리코딩테스트 연습프로그래머스이분탐색minjs알고리즘programmersrightleftalgorithm2019 카카오 개발자 겨울 인턴십 [WEEK02] DAY17 & TMI * 슬라이싱 #2 먼저 어제 글에서 잠깐 나왔던 슬라이싱 그래서 pop()을 했을 때 기존에 가져온 A리스트와 완전 별개의 리스트가 생성된다. 반면 B=A와 같은 꼴은 한 곳에서 pop()을 하면 양쪽이 다 pop이 된다. 다시 보니 또 기억이 안났던..........공유기,,, 2493 탑 (스택) 밑 부분에 11.17(수) 부분을 보면 된다 10000 원 영역 (스택) {, }와 같은 괄... 우선순위큐큐분할정복슬라이싱스택이분탐색분할정복 [백준_10816] 숫자 카드 2 - JAVA 이분 탐색으로 풀 수 있는 문제이지만, 처음 보는 유형이였다. upper bound와 lower bound를 이용해 찾으려는 Key 값의 최소 시작 index와 최대 끝 index를 찾아서 풀 수 있는 문제이다. 의 풀이를 참고하여 풀었다.... 이분탐색정렬실버4백준 Class 2백준 Class 2 공유기 설치(2110) 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.... 백준이분탐색백준 백준 - 듣보잡(1764) 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며,... 백준문자열이분탐색문자열 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 BOJ1620 이분탐색 하기전에는 시간초과 에러가 발생하였다. N이 10만이므로 해결책으로 이분탐색으로 통해 값들을 찾아나갔다. 그리고 숫자만 입력되었을 경우에 대비해 v1벡터(string값만 들어있는)를 따로 만들어 바로 출력되게 하였다.... 이분탐색맵맵 [BOJ] 2512 : 예산 🧺입력 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 100,000 이하이다. 그 다음 줄에는 총 예산을 나타내는 정수 M이 주어진다. M은 N 이상 1,000,000,000 이하이다. 🧺출력 첫째 줄에는 배정된 예산들 중 최댓값인 정... 이분탐색boj알고리즘CC 백준 1300번 k번째 수 파이썬 k번째 수는 최대 k값을 가짐 k번째의 수 보다 작은 수의 개수를 찾음 mid의 값보다 작은 수의 개수는 EX) 3 3 에서 7보다 작은 수의 개수는 11 ~ 13 = 3개 = min(n,7/1) = 3 21 ~ 23 = 3개 = min(n,7/2) = 3 31 ~ 3*2 = 2개 = min(n,7/3) = 2 즉 min(n,mid/i)를 n번 하면 mid의 값보다 작거나 같은수의 개수를 찾... 이분탐색파이썬알고리즘골드골드 Find First and Last Position of Element in Sorted Array 문제설명 정렬된 정수배열 nums의 값 중에서 target과 같은 값의 시작 인덱스와 끝 인덱스 리턴 없다면 [-1, -1] 리턴 O(log n)의 시간복잡도를 갖게 하여라. 제한사항 문제해결과정 이분탐색으로 target을 찾은 뒤 앞뒤로 하여 target과 다른 수가 나올 때 까지 인덱스값을 바꿔가며 시작,끝 인덱스를 찾아 리턴 코드... leetcodemedium이분탐색leetcode [프로그래머스] 코딩테스트 연습 - 이분탐색 Level 3 입국심사 이분탐색을 이런식으로 쓸 수 있구나 싶었던 문제였다. tmp값이 처음에 너무 크게 나올 수 있어서 실패하면 수정하려고했는데 그런 테스트 케이스는 없었던것같다. 출처: 프로그래머스 코딩 테스트 연습,... 프로그래머스이분탐색입국심사이분탐색
[BOJ] 1800번: 인터넷 설치 이분 탐색 + 다익스트라! 정답이 될 수 있는 값을 이분 탐색으로 정한 후, 검증위해 다익스트라를 활용 이분탐색 left는 정답이 될 수 있는 최솟값 0, right는 정답이 될 수 있는 최댓값으로 설정(입력 시, 미리 받아놓음) 중간값으로 다익스트라connectOK()를 돌림 유효하다면, 일단 답으로 설정하고 범위를 좀 더 작은값으로 해서 다시 검사 아니라면, 좀 더 큰 범위에서 다시 검사... 최단경로이분탐색이분탐색 수 찾기 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A... 파이썬1920번python이분탐색백준1920번 [코딩테스트 공부] 랜선 자르기 출처: 문제의 조건을 보게 되면, 시간 제한은 2초이고, K는 10000 이하로 제한이 되어있습니다. 따라서 O(N^2)까지의 복잡도가 허용된 상황이지만, 이 문제는 이분탐색으로 풀 수 밖에 없습니다. 이유는 다음과 같습니다. 데이터의 리스트만으로 특정한 정수 값을 도출해야합니다. 특정한 정수 값이 데이터 리스트 안에 존재하는 값이라는 보장이 존재하지 않기 때문에, 다른 방식으로 값을 도출해... 코딩테스트이분탐색이분탐색 [코딩테스트 공부] 공유기 설치 그런데 N이 200000까지 주어져있다. 따라서 NlogN의 복잡도로 구현을 해야함을 눈치챌 수 있다. 그런데, 일단 문제를 해석하는 것 부터가 쉽지않다. 이 문제를 읽고 내 심정은 정말 아래의 그림과 같았다... 정말 이 그림만큼 내 심정을 대변하는건 없을거다... 그래도 문제를 분석하다보면, 정말 의구심이 많이 든다. start, end를 조절하는 조건은 어떻게 해야함..? 결과적으로 나... 코딩테스트이분탐색이분탐색 [코딩테스트] 예산 출처: 해당 문제는 이전의 랜선 자르기, 나무 자르기 문제와 매우 비슷한 성격을 띄고있다. 따라서 이전의 두 문제를 참고하고 오면 도움이 될듯하다. 나무 자르기: 랜선 자르기: 참고로, 해당 문제도 이분 탐색을 이용해서 풀 예정이다. 사실 리스트에 없는 값을 탐색하는 유형에는 이분탐색만한게 없긴하지... 해당 문제도 나무 자르기와 별 다를게 없다. 오히려 풀이 자체가 똑같은 수준이니 설명은 ... 코딩테스트이분탐색이분탐색 [코딩테스트 공부] 나무 자르기 출처 : 일단 시간 제한은 1초이고, N은 100만까지 허용이 되어있는 상태입니다. 당연하게도 O(N^2)의 복잡도를 가지게 알고리즘을 구현하면 실패합니다. 따라서 이분탐색을 이용하여 문제를 해결해야합니다. 우리가 구하고자 하는 바부터 확실하게 하고 갑시다. 우리가 구해야하는 것은, 상근이가 적어도 M의 길이만큼 목재를 가져갈 수 있도록 하는 톱날의 최대 높이를 구하는게 관건입니다. 따라서,... 코딩테스트이분탐색이분탐색 [코딩테스트] List of Unique Numbers 당연히 O(N^2)의 복잡도는 사용하지 못하고, 선형으로 탐색하거나, 혹은 O(NlogN)의 복잡도로 해결해야한다는 뜻입니다. 위의 풀이는 O(NlogN)의 복잡도가 아니라, O(N^2logN) O(N2logN)의 복잡도를 가지고 있습니다. O(N^2) O(N2)의 복잡도도 허용이 되지 않는데 O(N^2logN) O(N2logN) 의 복잡도를 사용했으니 당연히 틀리겠죠? 저는 위의 문제를 선... 선형탐색수학이분탐색코딩테스트DPDP 🏃♀️[프로그래머스] 징검다리 건너기 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. "라이언" 선생님은 "니니즈 친구들"이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 ... maxJavaScript2019 카카오 개발자 겨울 인턴십징검다리코딩테스트 연습프로그래머스이분탐색minjs알고리즘programmersrightleftalgorithm2019 카카오 개발자 겨울 인턴십 [WEEK02] DAY17 & TMI * 슬라이싱 #2 먼저 어제 글에서 잠깐 나왔던 슬라이싱 그래서 pop()을 했을 때 기존에 가져온 A리스트와 완전 별개의 리스트가 생성된다. 반면 B=A와 같은 꼴은 한 곳에서 pop()을 하면 양쪽이 다 pop이 된다. 다시 보니 또 기억이 안났던..........공유기,,, 2493 탑 (스택) 밑 부분에 11.17(수) 부분을 보면 된다 10000 원 영역 (스택) {, }와 같은 괄... 우선순위큐큐분할정복슬라이싱스택이분탐색분할정복 [백준_10816] 숫자 카드 2 - JAVA 이분 탐색으로 풀 수 있는 문제이지만, 처음 보는 유형이였다. upper bound와 lower bound를 이용해 찾으려는 Key 값의 최소 시작 index와 최대 끝 index를 찾아서 풀 수 있는 문제이다. 의 풀이를 참고하여 풀었다.... 이분탐색정렬실버4백준 Class 2백준 Class 2 공유기 설치(2110) 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.... 백준이분탐색백준 백준 - 듣보잡(1764) 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며,... 백준문자열이분탐색문자열 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 BOJ1620 이분탐색 하기전에는 시간초과 에러가 발생하였다. N이 10만이므로 해결책으로 이분탐색으로 통해 값들을 찾아나갔다. 그리고 숫자만 입력되었을 경우에 대비해 v1벡터(string값만 들어있는)를 따로 만들어 바로 출력되게 하였다.... 이분탐색맵맵 [BOJ] 2512 : 예산 🧺입력 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 100,000 이하이다. 그 다음 줄에는 총 예산을 나타내는 정수 M이 주어진다. M은 N 이상 1,000,000,000 이하이다. 🧺출력 첫째 줄에는 배정된 예산들 중 최댓값인 정... 이분탐색boj알고리즘CC 백준 1300번 k번째 수 파이썬 k번째 수는 최대 k값을 가짐 k번째의 수 보다 작은 수의 개수를 찾음 mid의 값보다 작은 수의 개수는 EX) 3 3 에서 7보다 작은 수의 개수는 11 ~ 13 = 3개 = min(n,7/1) = 3 21 ~ 23 = 3개 = min(n,7/2) = 3 31 ~ 3*2 = 2개 = min(n,7/3) = 2 즉 min(n,mid/i)를 n번 하면 mid의 값보다 작거나 같은수의 개수를 찾... 이분탐색파이썬알고리즘골드골드 Find First and Last Position of Element in Sorted Array 문제설명 정렬된 정수배열 nums의 값 중에서 target과 같은 값의 시작 인덱스와 끝 인덱스 리턴 없다면 [-1, -1] 리턴 O(log n)의 시간복잡도를 갖게 하여라. 제한사항 문제해결과정 이분탐색으로 target을 찾은 뒤 앞뒤로 하여 target과 다른 수가 나올 때 까지 인덱스값을 바꿔가며 시작,끝 인덱스를 찾아 리턴 코드... leetcodemedium이분탐색leetcode [프로그래머스] 코딩테스트 연습 - 이분탐색 Level 3 입국심사 이분탐색을 이런식으로 쓸 수 있구나 싶었던 문제였다. tmp값이 처음에 너무 크게 나올 수 있어서 실패하면 수정하려고했는데 그런 테스트 케이스는 없었던것같다. 출처: 프로그래머스 코딩 테스트 연습,... 프로그래머스이분탐색입국심사이분탐색