목록greedy (26)
기록방
👉 문제링크 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 🔸 문제 분석 🔸 배열의 첫째자리가 최대값이 되도록 다른 인덱스에서 값을 가져오는데 드는 최소 횟수를 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { Buff..
👉 문제링크 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 🔸 문제 분석 🔸 'X'와 '.'으로 이루어진 문자열이 입력된다. 'X"를 "AAAA"와 "BB"로 교체해서 출력한다. 불가능하면 -1을 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static String AB(String temp){ String re = ""; int len = temp.length(); if (len % 2 != 0) { System.out.println(-1); System.exit(0); } for (int i = 0; i < len / 4; i++) r..
👉 문제링크 1548번: 부분 삼각 수열 세 수 x, y, z가 x+y>z, x+z>y, y+z>x의 관계를 만족하면, 세 수는 삼각관계에 있다고 한다. 마찬가지로 길이가 N인 수열 B(b[0], b[1], ..., b[n-1])의 모든 b[i], b[j], b[k]가 삼각관계에 있으면 이 수열은 삼각 www.acmicpc.net 🔸 문제 분석 🔸 입력받은 리스트의 원소로 만들 수 있는 삼각 수열의 최대 길이를 출력한다. 그리디적인 관점과 브루트포스의 접근이 모두 필요하다. 입력받은 리스트를 오름차순 정렬했을때, arr[i] + arr[i+1] > arr[n] 을 만족하면 i부터 n 사이의 모든 수들도 삼각관계이다. (그리디) 가장 앞이나 가장 뒤를 빼가며 가장 긴 부분 삼각 수열을 찾는다. (브루트포스..
👉 문제링크 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 🔸 문제 분석 🔸 걸리는 시간 숫자의 수와 숫자들의 리스트가 입력된다. 각 리스트 별 끝나는 시간들의 총합의 최소값을 출력한다. 문제 설명은 그리디 알고리즘 이지만, 정렬로 간단히 풀린다. 🔸 코드 🔸 import sys n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().rstrip().split())) arr.sort() sum_num = 0 for i in range(n): sum_num += sum(..
👉 문제링크 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 🔸 문제 분석 🔸 동전 종류 수 n과 만들 가치의 합 k, 동전 종류를 입력받는다. 동전을 최소로 사용하면서 k를 만든다. 🔸 코드 🔸 import sys n, k = map(int, sys.stdin.readline().split()) coin = [] for i in range(n): c = int(sys.stdin.readline()) if c = i: answer += k//i k..