문제풀이/그리디 29

[JAVA] [그리디] 백준 11501 주식

문제 https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 코드 import java.io.*; import java.util.*; public class b11501 { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st..

[JAVA] [그리디] Pro 디펜스 게임

문제 https://school.programmers.co.kr/learn/courses/30/lessons/142085?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import java.util.*; class Solution { public int solution(int n, int k, int[] enemy) { // 무적권의 수가 적 배열 길이보다 클 때 if(k>enemy.length){ return enemy.length; } int answer = k-1; PriorityQueue pq=new PriorityQ..

[JAVA] [그리디] Pro 마법의 엘리베이터

문제 https://school.programmers.co.kr/learn/courses/30/lessons/148653?language=java 코드 class Solution { public int cal(int[] arr, int i){ if(arr[i]==10){ arr[i-1]+=1; arr[i]=0; } // 현재 값이 4이하이면 그대로 return if(arr[i]=5){ arr[i-1]+=1; return 10-arr[i]; } else{ return arr[i]; } } // 현재 값이 6이상이면 10-현재 값 return else{ arr[i-1]+=1; return 10-arr[i]; } } public int solution(int storey) { int answer = 0; St..

[JAVA] [그리디] 백준 1339 단어수학

문제 https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 코드 import java.util.*; import java.io.*; public class hello { public static void main(String[] args) throws IOException{ String str; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringToke..

[파이썬] [그리디] 백준 1715 카드 정렬하기

문제 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 코드 import heapq n=int(input()) array=[int(input()) for _ in range(n)] heapq.heapify(array) result=0 while len(array)>1: t1=heapq.heappop(array) t2=heapq.heappop(array) temp=t1+t2 result+=temp heapq.heappush(array..

[파이썬] [그리디] 백준 17615 볼 모으기

문제 https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 코드 n=int(input()) array=list(input()) result=500001 #case 1: 빨간색을 오른쪽으로 모으기 flag=False count=0 for i in range(len(array)-1,-1,-1): if array[i]=='B': flag=True if flag==True and array[i]=='R': count+=1 res..

[파이썬] [그리디] 백준 2138 전구와 스위치

문제 https://www.acmicpc.net/problem/2138 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져 www.acmicpc.net 코드 import sys import copy input = sys.stdin.readline n = int(input()) array = list(map(int, list(input().rstrip()))) target = list(map(int, list(input().rstrip()))) def change(i): if i == 0: if temp[i] ==..

[파이썬] [그리디] Pro 구명보트

문제 https://programmers.co.kr/learn/courses/30/lessons/42885?language=python3 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 코드 def solution(people, limit): people.sort() i=0 j=len(people)-1 count=0 while i

* [파이썬] [그리디] Pro 큰 수 만들기

문제 https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 코드 def solution(number, k): answer = [] for num in number: # answer에 뭐라도 존재하고, k가 0보다 크며, answer의 맨 위 값이 현재의 num보다 작으면 while answer and k > 0 and answer[-1] < num: # answer의 맨 위 값을 제거하고 k도 -1 해준다 answer.pop() k -= 1 # 현재의 num값은 무조건적으로 answer에 넣어준다 answer.append(num) # answer는 number의..