그리디

    [BJ11399] ATM

    백준 - ATM 문제 링크 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 입출력 5 3 1 4 3 2 32 문제 풀이 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.St..

    [BJ1931] 회의실 배정

    백준 - 회의실 배정 문제 링크 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 입출력 2 0 1 3 3 2 문제 풀이 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int ans, N; static Node[] arr; public static void main(String[]..

    [BJ2628] 종이 자르기

    백준 - 종이 자르기 문제 링크 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 문제 입출력 1 10 8 3 0 3 1 4 0 2 30 문제 입출력 2 10 10 1 0 1 90 문제 풀이 package problem.BJ; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; impor..

    [TC1101] [그리디] 모험가 길드

    🚩 문제 설명 한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 '공포도'를 측정했는데, '공포도'가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어집니다. 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다. 동빈이는 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금합니다. 동빈이를 위해 N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최댓값을 구하는 프로그램을 작성하세요. ⏱️ 시간 복잡도 ▪ O(N^2) ◾ 모험을 떠날 수 있는 그룹의 최대를 반환해야합니다. ✅ 입출력 변수 설명 N: 모험가의 수 arr..

    [TC0302] [그리디] 큰 수의 법칙

    ✅ 이것이 코딩 테스트다 - 큰 수의 법칙 # N M K 입력 N, M, K = map(int, input().split()) # 수열 입력 arr = list(map(int, input().split())) # 제일 큰 수, 그 다음 수 구하기 arr_sorted = sorted(arr) n1 = arr_sorted[-1] # first n2 = arr_sorted[-2] # second 라고 변수명 지었어도 좋았을듯 # 카운트 cnt = M // (K + 1) remain = M % (K + 1) if (M % 2 == 0): # 짝수라면 ans = ((n1 * K) + n2) * cnt print(ans) else: # 홀수라면 ans = ((n1 * K) + n2) * cnt + (n1 * rem..

    [TC0301] [그리디] 거스름돈

    ✅ 이것이 코딩 테스트다 - 거스름돈 N = int(input()) # N : 손님에게 거슬러줘야할 돈 print(N) coins = [500, 100, 50, 10] # 내가 가지고 있는 동전 배열 count = 0 # 최소 동전의 개수 for coin in coins: count += N // coin N %= coin print(count) ◾ Greedy ◾ 내가 가지고 있는 동전 배열을 우선 선언 ◾ 해당 배열을 루프한다. ◾ 해당 동전으로 나눈 나머지 값들을 더하고 return 한다.