문제 출처: www.acmicpc.net/problem/13164 13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 www.acmicpc.net 1. 문제 접근 방식 - 입력받은 키들의 차이를 새로운 리스트로 만들어 정렬 후 N-K까지의 합을 구하면 된다. 2. 내가 푼 코드 import sys N, K = map(int, sys.stdin.readline().split()) height = list(map(int, sys.stdin.readline().split())) result = [] for i in range(1, N): re..
1. 그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘은 가장 단순하지만 강력한 문제 해결 방법 -> 탐욕법 현재 상황에서 당장 가장 좋은 것만 고르는 방법 현재의 선택이 나중에 미칠 영향까지는 고려하지 않음 유형이 매우 다양하기 때문에 문제를 많이 접하면서 훈련하는 것을 추천 문제를 풀기위한 최소한의 아이디어를 생각해낼 수 있는 능력 요구 = 창의력 예제: 거스름돈 문제 설명: 거스름돈으로 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정하고 거스름돈이 N원일 때 거슬러줘야 할 동전의 최소 개수 (단, N은 항상 10의 배수) 내가 푼 코드 import sys N = int(sys.stdin.readline()) a = N // 500 N = N % 500 b = N..
문제 출처: www.acmicpc.net/problem/1188 1188번: 음식 평론가 첫째 줄에 소시지의 수 N과 평론가의 수 M이 주어진다. (1 ≤ N, M ≤ 100) www.acmicpc.net 1. 문제 접근 방식 - 처음에 딱히 생각이 나지 않아 경우의 수를 생각하며 일일히 적어보았다. 여기서는 최대공약수를 활용하는 것이 가장 핵심인 문제다. 2. 내가 푼 코드 import sys # 최대 공약수를 구하는 함수 def gcd(a, b): while b: a, b = b, a % b return a N, M = map(int, sys.stdin.readline().split()) # M에서 N과 M의 최대공약수 빼기 print(M - gcd(N, M)) 3. 결과 및 느낀점 - 성공! 하다가..
문제 출처: www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 1. 문제 접근 방식 - 먼저 세개의 구간으로 나누어야 했다. 그 나눠진 구간들에서 하나씩을 선택하여 3개의 값을 구하는 과정을 반복해가면서 주어진 값을 넘지 않는 최대의 값을 구하였다. 2. 내가 푼 코드 import sys N, M = map(int, sys.stdin.readline().split()) num = list(map(int, sys.stdin.rea..