문제풀이/Greedy

https://school.programmers.co.kr/learn/courses/30/lessons/42884코드def solution(routes): routes.sort() section = [] for r in routes: if not section or section[-1][1]  이 풀이는 쉽게 말하자면 겹치는 구간을 구한다고 생각하면 편하다. 문제의 예시로 나왔던 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]]을 넣고 돌려보면 `section`이 결국 [[-18, -15], [-5, -5]]이 나오게 된다. 이 구간들에 각각 단속카메라를 하나씩 설치하면 모든 차량이 한 번은 단속카메라를 만나도록 할 수 있게 된다.  더 나은 코드de..
https://www.acmicpc.net/problem/2374 코드import sysinput = sys.stdin.readlinen = int(input())arr = []for i in range(n): a = int(input()) if not arr or arr[-1] != a: arr.append(a)def find_min(arr): # 현재 배열에서 가장 작은 값과 그 인덱스 리턴 min_v = int(1e9)+1 min_idx = -1 for i in range(len(arr)): if min_v > arr[i]: min_v = arr[i] min_idx = i return [min_idx,..
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=4&contestProbId=AY9QUhl6cfQDFAVF&categoryId=AY9QUhl6cfQDFAVF&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 코드for tc in range(1, int(input())+1): n = int(input()) arr = [-1]+list(map(int, input().split()))+[-1] empty = n+1 # 현재 비어있는 자리 # 처음에 자..
https://www.acmicpc.net/problem/1455 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())board = [list(input()) for _ in range(n)]ans = 0for i in range(n-1, -1, -1): for j in range(m-1, -1, -1): if board[i][j] == '1': # 뒷면 # 뒤집기 for r in range(i+1): for c in range(j+1): board[r][c] = ('0' if board[r][c] == '1'..
https://www.acmicpc.net/problem/1911 코드from math import ceilimport sysinput = sys.stdin.readlinen, l = map(int, input().split())woongs = []for _ in range(n): s, e = map(int, input().split()) woongs.append((s, e))woongs.sort()ans = 0prev = -1_000_000for i in range(n): if prev  prev는 이전에 깔았던 널빤지 중 가장 끝의 널빤지의 끝 위치이다. 그렇기 때문에 prev가 현재 웅덩이의 시작위치보다 오른쪽이라면 prev에서부터 이어서 널빤지를 더 깔면 되고, 아니라면 현재 웅덩..
딜레이레이
'문제풀이/Greedy' 카테고리의 글 목록