본문 바로가기

Algorithm 💡/Greedy22

[백준 2212번] 센서 https://www.acmicpc.net/problem/2212import sysimport heapqinput = sys.stdin.readline# 고속도로 위에 N개의 센서를 설치# 고속도로 위에 최대 K개의 집중국을 세울 수 있다# 각 집중국은 센서의 수신 가능 영역을 조절할 수 있다# 집중국의 수신 가능 영역은 고속도로 상에서 연결된 구간으로 나타나게 된다# N개의 센서는 적어도 하나의 집중국과는 통신이 가능해야함# 각 집중국의 '수신 가능 영역의 길이의 합'을 최소화# 고속도로는 평면상의 직선이라고 가정# 센서들은 이 직선 위의 한 기점인 원점으로부터의 정수 거리의 위치에 놓여 있다# 따라서, 각 센서의 좌표는 정수 하나로 표현# 단, 집중국의 수신 가능영역의 길이는 0 이상이며 모든 센서의.. 2024. 10. 5.
[백준 1417번] 국회의원 선거 https://www.acmicpc.net/problem/1417import sysimport heapqinput = sys.stdin.readline# 국회의원 선거를 조작# 다솜이의 기계는 각 사람들이 누구를 찍을 지 미리 읽을 수 있다. # 어떤 사람이 누구를 찍을 지 정했으면, 반드시 선거때 그 사람을 찍는다.# 형택구에 나온 국회의원 후보는 N명# 다솜이는 이 기계를 이용해서 그 마을의 주민 M명의 마음을 모두 읽었다.# 다솜이는 기호 1번# 자신을 찍지 않으려는 사람을 돈으로 매수해서 국회의원에 당선이 되게 하려고 한다.# 다른 모든 사람의 득표수 보다 많은 득표수를 가질 때, 그 사람이 국회의원에 당선# 출력 : 다솜이가 매수해야하는 사람의 최솟값N = int(input())my_vote =.. 2024. 10. 3.
[소프티어 6279번] 스마트 물류 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# P - 로봇, H - 부품n, k = map(int,input().split())area = list(input())visited = [False]*nfor i,value in enumerate(area): if value == 'P': for j in range(i-k,i+k+1): if 0  이번 문제는 로봇과 부품으로 이루어진 1차원 배열에서 로봇이 자신을 기준으로 k 거리만큼의 부품을 집을 수 있다고 했을 때, 부품을 집을 수 있는 로봇의 최대 수를 구하는 문제이다. 처음에는 DFS를 사용하여 풀이하려고 했는데, 생각보다 완전.. 2024. 6. 25.
[백준 11501번] 주식 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net t = int(input()) for _ in range(t): n = int(input()) prices = list(map(int,input().split())) answer = 0 maximum = prices[-1] for i in range(n-2,-1,-1): if prices[i] > maximum: maximum = prices[i] elif prices[i] < maximum: answer += (maximum - prices[i]) .. 2023. 12. 28.
[백준 1049번] 기타줄 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net # 끊어진 기타줄 개수 N # 기타줄 브랜드 M # 각 브랜드마다 판매중인 6개의 패키지의 가격, 낱개 가격 # 적어도 N개를 사기 위해 필요한 돈의 "최솟값" n,m = map(int,input().split()) prices = [list(map(int,input().split())) for _ in range(m)] min_package = min([x[0] for x in prices]) min_item = min([x[1] for x in price.. 2023. 10. 7.
[백준 23889번] 돌 굴러가유 23889번: 돌 굴러가유 $M$번째 줄에 걸쳐 가장 많은 모래성을 지키기 위해 벽을 설치해야 할 마을의 위치를 오름차순으로 출력한다. 가장 많은 모래성을 지킬 수 있는 경우가 두 가지 이상 존재할 경우, 사전순으로 가 www.acmicpc.net from itertools import combinations n,m,k = map(int,input().split()) # i번째 마을의 모래성의 개수 xi house_count = [0]+list(map(int,input().split())) # 돌이 굴러가기 시작하는 마을의 위치 rock_locations = list(map(int,input().split())) house_status = [True]*(n+1) # 벽의 개수 m개의 줄에 걸쳐 가장 많은.. 2023. 9. 30.