728x90
반응형

이분 탐색 8

[Baekjoon 3079 / Python / 골드5] 입국심사

이분 탐색 문제이다. 일반적인 이분 탐색의 틀에서 크게 벗어나지 않는다.다만 start와 end의 초기 설정 및 mid값의 유효성을 어떻게 판단할지에 대해서 고민이 좀 필요했다.  # 이분 탐색import sysinput = sys.stdin.readlineN, M = map(int, input().split())test = [int(input()) for _ in range(N)]# 이분 탐색def binarySearch():    start = min(test)    end = max(test) * M    result = end    while start end:        mid = (start + end) // 2        total = 0        # 임의의 시간(mid) 동안 몇명..

[Baekjoon 2110 / Python / 골드4] 공유기 설치

import sysinput = sys.stdin.readline# 집, 공유기 개수N, C = map(int, input().split())house = [int(input()) for _ in range(N)]  # 집 좌표house.sort() # 집을 순서대로 정렬# 이분 탐색으로 인접 공유기 간의 최소 거리를 찾는다def binarySearch():    end = house[-1] - house[0] # 최대 거리    if C == 2:        return end    start = 1 # 최소 거리    result = 0 # 결과를 저장할 변수    # 최적의 거리를 찾을 때까지 반복한다    while start end:        cur = house[0] # 마지막으로 공유..

[Baekjoon 2805 / python / 실버2] 나무 자르기

import sys n, m = map(int, sys.stdin.readline().split()) # 나무의 수 / 요구 벌목량 tree = list(map(int, sys.stdin.readline().split())) # 나무 리스트 tree.sort(reverse=True) # 내림차순 정렬 (큰 나무부터) result = 0 # 이분 탐색으로 적절한 "높이"를 탐색한다 start = 1 # 최소 높이 end = max(tree) # 최대 높이 while start while문이 끝나면, 반드시 start가 end보다 1 크다 mid = (start + end) // 2 cutTree = 0 for i in tree: # 높이(mid)를 설정하고 일일이 벌목을 해본다 if i > mid: # 나..

[크래프톤 정글 5기] week01 알고리즘 주차 네번째 날, 스택, 큐, DFS, 그래프, 백트래킹, 이분 탐색

스택(Stack) - 후입선출(Last In First Out) 구조 - 마지막에 들어온 데이터가 가장 먼저 나간다 - 파이썬에서는 리스트와 pop(), append() 메소드로 스택을 구현할 수 있다 큐(Queue) - 선입선출(First In First Out) 구조 - 먼저 들어온 데이터가 가장 먼저 나간다. “공정한 자료구조” - from collections import deque 사용해서 deque 자료구조를 활용하는 게 좋다 - deque는 스택, 큐의 장점을 모두 채택한 것인데 리스트에 비해 빠르고 queue 라이브러리를 이용하는 것 보다 간단하다 - append(), popleft()를 이용하여 큐를 구현할 수 있다 DFS(Depth-First Search, 깊이 우선 탐색) - 그래프에..

[크래프톤 정글 5기] week01 알고리즘 주차 두번째 날, Big-O, 시간/공간 복잡도

리처드 파인만 공부법- 무언가를 간단하게 설명할 수 없다면, 그것을 제대로 이해하고 있는 것이 아니다- 어린이도 이해할 수 있을 만큼 쉽고 평이한 언어로 설명할 수 있도록 공부해야 함-> 어려운 단어, 문장을 그대로 외우는 게 아닌, 원리를 이해하여 간단히 설명할 수 있도록 연습 알고리즘 평가는 수행 시간/메모리 사용량에 기준을 둔다.시간 복잡도(Time Complexity)- 수행 시간에 해당함- 특정 크기의 입력을 기준으로, “필요한 연산의 횟수” 공간 복잡도(Space Complexity)- 메모리 사용량- 프로그램 실행/완료에 “필요한 메모리 공간” 시간 복잡도와 공간 복잡도는 “반비례”하는 경향이 있다.ex) 실행시간을 줄이면 메모리를 많이 쓰고, 메모리를 적게 쓰면 실행시간이 늘어나고...실제..

[Baekjoon/JAVA] 백준 10815번 숫자 카드

주어지는 숫자의 범위가 매우 크기 때문에, 일일이 비교하는 방법보다는 이분 탐색 알고리즘을 이용해야 합니다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; int n = Integer.parseInt(br.readLine()); int cards[] = new int[n]; st = new StringTok..

728x90
반응형