greedy 8

프로그래머스 단속카메라 파이썬**

https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 이 문제의 가장 탐욕스러운 방법은 진출지점 기준으로 오름차순으로 정렬한 후, 진출지점에 카메라를 설치하는 것이다. 왜냐하면 진출지점이 오름차순 정렬돼있기 때문에 첫번째 진출지점에 카메라를 설치하면 다음 자동차는 무조건 첫번째 진출지점 이후에 진출하기 때문에 카메라를 만나기에 가장 최선이다. 풀이: 1. 진출지점 기준으로 오름차순 정렬한다. 2. 자동차를 순회한다. 3. 만약 카메라가 현재 자동차의 시작지점 이전에 있다면 그 차는 카메라를 만나지 못한 것이므로 카메라..

프로그래머스 구명보트 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 이전에 풀었던 큰수만들기 를 약간은 무식하게 풀고나서 다른사람의 풀이를 보고 뭔가 느낀바가 있다. 뭐라고 말로 표현하기 어려운데 굳이 표현하자면 컴퓨터공학도 처럼 생각하자 는 것이다. 이번 문제를 풀 때 그런 생각으로 임했고 아래와 같이 깔끔하게 풀었다. 만족스러운 깔끔한 코드다. 물론 문제자체도 무척 쉬웠다. 이 문제를 풀기 위해서 ..

프로그래머스 큰 수 만들기 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr def solution(number, k): answer = [] number = list(map(int, number)) start = 0 ans_len = len(number) - k remain = ans_len - len(answer) end = len(number) - remain + 1 while len(answer) < len(number) - k: max_val = -1 temp_s = start temp_e = end remain = ans_len - len(answer) # print((start, end)) # prin..

프로그래머스 체육복 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 쉽게 풀었으나 너저분한 코드가 많다. 훨씬 많이 줄일 수 있을듯. 풀이: 1. 전체 학생수 에서 체육복을 잃어버린 학생을 뺀 값을 임시로 수업할 수 있는 학생수로 정함 2. 1부터 전체 학생 수 만큼 학생 배열 생성 3. 체육복을 잃어버림과 동시에 여분을 갖고 있는 학생은 그냥 아무일도 일어나지 않은 학생이므로 체육복을 잃어버린 학생, 여분을 갖고있는 학생에서 빼..

백준 14464 파이썬***

더보기 https://www.acmicpc.net/problem/14464 14464번: 소가 길을 건너간 이유 4 첫 줄에 C와 N이 주어진다. 다음 C줄에는 T1…TC가 주어지고, 그 다음 N줄에는 Aj와 Bj(Aj ≤ Bj)가 주어진다. A, B, T는 모두 최대 1,000,000,000인 음이 아닌 정수이고, 같을 수도 있다. www.acmicpc.net import sys C, N = map(int, sys.stdin.readline().rstrip().split()) chickens = [int(sys.stdin.readline().rstrip()) for _ in range(C)] chickens = sorted(chickens) cows = [list(map(int, sys.stdin.re..

백준 14698 파이썬

https://www.acmicpc.net/problem/14698 14698번: 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) 각 테스트 케이스마다 슬라임을 끝까지 합성했을 때 청구될 비용의 최솟값을 1, 000, 000, 007로 나눈 나머지를 출력한다. 전기 에너지가 전혀 필요하지 않은 경우엔 1 을 출력한다. www.acmicpc.net import sys import heapq T = int(sys.stdin.readline()) for _ in range(T): N = int(sys.stdin.readline()) energies = list(map(int, sys.stdin.readline().rstrip().split())) heapq.heapify(energies) if len(e..

백준 1826 파이썬**

https://www.acmicpc.net/problem/1826 1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경 www.acmicpc.net import heapq import sys N = int(sys.stdin.readline()) gas_stations = [] for _ in range(N): a, b = map(int, sys.stdin.readline().rstrip().split()) heapq.heappush(gas_stations, (a, b)) remain_distance, re..

백준 11000 파이썬

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net import sys import heapq N = int(sys.stdin.readline()) class_list = [] for _ in range(N): S, T = map(int, sys.stdin.readline().rstrip().split()) class_list.append((S, T)) class_list.sort() # print(class_list) q = [] for c in class_list: if q and q[0]