본문 바로가기

전체 글82

이분 탐색 정리 이분 탐색 이분 탐색이란? 정렬되어 있는 배열에서 탐색을 할 때, 탐색 범위를 반씩 나누어 탐색하는 방법 장단점 장점 : 하나하나 살펴보는 기존 탐색에 비해 훨씬 빠르다. 단점 : 정렬이 된 상태에서만 사용할 수 있어 사용하기 까다롭다. 이분 탐색 방법 데이터 배열을 정렬해준다. 정렬된 배열에서 왼쪽 끝 인덱스 : left, 오른쪽 끝 인덱스 : right를 이용해 중앙값 : mid를 찾는다. mid와 배열에서 찾고자 하는 값(target)을 비교한다. target이 나올 때까지 아래와 같은 탐색 과정을 반복한다 mid target : right를 mid-1로 이동시켜 왼쪽 구간 탐색 (left.. 2021. 11. 26.
[python] 11047번 - 동전 0 문제 파이썬 문제 풀이 동전의 개수를 최소로 하기 위해서는 가장 비싼 동전으로 최대한 바꾸고, 나머지에 대해 그다음 비싼 동전으로 바꿔가면서 나머지가 0이 되도록 하는 방법을 사용한다. import sys input = sys.stdin.readline N, K = list(map(int, input().rstrip().split())) coin = [] for i in range(N) : coin.append(int(input().rstrip())) coin.reverse() count = 0 for i in coin: if K == 0 : break count += (K // i) K %= i print(count) 가장 비싼 동전부터 접근하기 위해 오름차순으로 입력받은 동전을 reverse해줘 내림.. 2021. 11. 24.
[python] 13305번 - 주유소 문제 파이썬 풀이 기름 값의 최소 비용을 구하는 문제이다. 최소 비용을 저장해두는 변수를 하나 선언한 뒤 이보다 작은 기름 값이 나오면 최소 비용을 갱신한다. 따라서 최소 비용이 갱신되기 전까지는 이전까지의 최소 비용을 이용해 이동을 하고 새로운 최소 비용이 갱신되면 해당 비용으로 이동을 진행하면 된다. import sys from typing import Mapping input = sys.stdin.readline N = int(input().rstrip()) road_length = list(map(int, input().rstrip().split())) oil_price = list(map(int, input().rstrip().split())) result = 0 min_price = oil_p.. 2021. 11. 24.
[python] 1931번 - 회의실 배정 문제 파이썬 풀이 최대 회의 수를 구하기 위해서는 회의시간이 짧은 즉 가장 빨리 끝나는 회의를 배정하면 된다. 계속해서 짧은 회의를 배정하여 사용할 수 있는 회의의 수를 늘리는 것이다. 따라서 회의가 끝나는 시간을 기준으로 살펴본다. 회의가 끝나는 시간이 현재 시간과 가장 가까운 회의를 배정하면된다. import sys input = sys.stdin.readline N = int(input().rstrip()) time_list = [] for i in range(N) : time_list.append(list(map(int, input().rstrip().split()))) time_list.sort(key=lambda x: (x[1], x[0])) count = 0 last_time = 0 for .. 2021. 11. 23.