본문 바로가기

BOJ13

[BinarySearch] 기타 레슨 출처: deok2kim.tistory.com/109 [python] 백준 - 2343. 기타 레슨 🤔문제 해결 S1 | 이분 탐색 이분 탐색 문제는 무엇을 탐색 할 것인지가 가장 중요합니다. 이 문제에서는 블루레이의 최소 크기 를 찾아야 합니다. 처음에 각각의 블루레이에 레슨들을 순서대로 deok2kim.tistory.com # 2343 guitar lesson def add_lesson(): cnt = 0 # 레코드 갯수 세기 sum_lesson = 0 # 한 레코드에 들어갈 레슨들의 합 for i in range(N): if sum_lesson + lesson_list[i] > mid: cnt += 1 sum_lesson = 0 sum_lesson += lesson_list[i] else: if su.. 2020. 12. 11.
[BinarySearch] 두 배열의 합 투포인터 알고리즘$O(N)$ 1차원 배열이 있고 이 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가며 원하는 것을 얻는 형태 출처: m.blog.naver.com/kks227/220795165570 투 포인터(Two Pointers Algorithm), 슬라이딩 윈도우(Sliding Window) (수정: 2019-09-09) 조금 성향이 비슷하다고 생각하는 기법 2개를 함께 쓰려 합니다.첫 번째로 소개해드릴 기법은 투 포인터(tw... blog.naver.com 이진탐색도 2개의 포인트로 움직이는 것은 동일하지만 다른점은 이진탐색은 탐색의 범위가 줄어든다는 점이고 투포인터 알고리즘은 그렇지 않다. 또한, 이진탐색은 정렬이 필요하지만 투포인터는 그렇지 않다. 따라서 투포인터는 $O(N).. 2020. 12. 11.
[BinarySearch] 개똥벌레 코드 출처:blog.naver.com/PostView.nhn?blogId=crm06217&logNo=222023706440&categoryNo=23&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView [백준 3020번] 개똥벌레, 이분 탐색 (Binary Search) 응용 (Python 코드 첨부, 난이도: Gold 5) (소스 코드 전체는 글의 맨 아래에 첨부하였다.)​한줄평 크기 순으로 정렬된 데이터에 대해서 log N 시간... blog.naver.com Pseudocode를 만들면 좀더 순차적으로 문제접근이 된다는 점을 알게됨 이 문제에서는 2개의 array에 대해 각각 BS 수행해야 하고 서로 반대되.. 2020. 12. 8.
[BinarySearch] 게임 1072 suri78.tistory.com/214 [백준알고리즘] 1072번: 게임 -Python [백준알고리즘] 1072번: 게임 -Python https://www.acmicpc.net/problem/1072 1072번: 게임 각 줄에 X와 Y가 주어진다. X는 1,000,000,000보다 작거나 같은 자연수이고, Y는 0보다 크거나 같고, X보다 작거나.. suri78.tistory.com 범위가 너무 크다는 생각에 이진탐색의 기준을 어떻게 잡아야할지 생각이 안나서 결국 구글링으로 정답을 찾아보게 되었다. while True: try: x, y = map(int, input().split()) except EOFError: break now_z = int(y*100/x) s, e = 1, 1000000000.. 2020. 12. 8.
[BinarySearch w/LIS] 반도체설계 LIS 설명 블로그 seungkwan.tistory.com/8 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence) 어떠한 수열에서 가장 긴 증가하는 부분 수열(Longest Increasing Subsequence)를 찾는 문제는 꽤나 유명한 문제입니다. 다이나믹 프로그래밍을 공부할 때 예시로 자주 나오는 문제이고, 프로그래밍 대회 seungkwan.tistory.com # 2352, 반도체 설계 import sys input = sys.stdin.readline def lower_bound(s, e, v): while s < e: m = (s+e) // 2 if lst1[m] < v: s = m + 1 else: e = m return e n = int(input().. 2020. 12. 6.
[BinarySearch] K번째 수 1300번 wookje.dance/2017/02/20/boj-1300-K%EB%B2%88%EC%A7%B8-%EC%88%98/ [BOJ] 1300 : K번째 수 1300 : K번째 수 풀이 임의의 숫자 m을 골라서 K번째 숫자인지 판단해보자! 그 임의의 숫자 m은 무려 O(log K)에! 무려 이분 탐색으로 찾아보자! 그렇다면 떠오르는 질문, m 보다 작은 숫자의 개수를 어 wookje.dance N = 4일 때 배열 A = [1, 2, 3, 4] [2, 4, 6, 8] [3, 6, 9, 12] [4, 8, 12, 16] 풀이 임의의 숫자 m을 골라서 K번째 숫자인지 판단해보자! 그 임의의 숫자 m은 무려 O(log K)에! 무려 이분 탐색으로 찾아보자! 그렇다면 떠오르는 질문, m 보다 작은 숫자의 개수를 어떻게 .. 2020. 12. 3.
[BinarySearch] 가장 긴 증가하는 부분 수열 2 hooongs.tistory.com/129 [백준12015번] 가장 긴 증가하는 부분 수열 2 / Python3 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50}. hooongs.tistory.com m.blog.naver.com/PostView.nhn?blogId=bestmaker0290&logNo=220820005454&proxyReferer=https:%2F%2Fwww.google.com%2F 알고리즘 기초 - Lower Bound & Upper Bound Lower Bound와 Upper Boun.. 2020. 12. 3.
[BinarySearch] 수들의 합 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? N의 최댓값을 구해야되기 때문에 자연수의 합이 주어졌을 때 가장 작은 수 부터 차례로 더하면서 그 합이 S를 넘기 직전의 개수를 출력하면 된다. 1부터 N까지의 합은 N(N+1) / 2 N이 1일때를 제외하고 N(N+1) / 2 2020. 12. 1.
[BinarySearch] 공유기 설치 n, c = list(map(int, input().split(' '))) array = [] for _ in range(n): array.append(int(input())) array.sort() start = array[1] - array[0] end = array[-1] - array[0] result = 0 while (start = value + mid: value = array[i] print("installing to {} as {}th router".format(array[i], count)) count += 1 if count >= c: # if more than c routers can be installed, increase range print("increase") start = .. 2020. 12. 1.