목록분류 전체보기 (271)
DHistory
문제 25631번: 마트료시카 합치기 마트료시카는 속이 비어있는 인형이다. 성빈이는 $N$개의 마트료시카를 가지고 있다. $i$번째 마트료시카의 크기는 $a_i$이고, 마트료시카 속은 모두 비어있다. 성빈이는 남아 있는 마트료시카 중 www.acmicpc.net 풀이 1 """ N개의 마트료시카 i번째의 크기는 ai i번째와 j번째를 고른 뒤 i번째를 j번째에 넣을 수 있어야함. (단, j번째 마트료시카의 속이 비어있어야하고 i번째 마트료시카보다 j번째 마트료시카가 더 커야 함) 마트료시카를 최대한 합쳐서 정리 남아있는 마트료시카의 최소 개수는 얼마인가? """ n = int(input()) matryoshka = list(map(int, input().split()))[:n] def solution(m..
문제 25496번: 장신구 명장 임스 첫 번째 줄에 정수 $P$와 정수 $N$이 공백으로 구분되어 주어진다. ($1 \le P \le 200$, $1 \le N \le 1\,000$) 두 번째 줄에는 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($1 \le A_i \le 200$) www.acmicpc.net 풀이 """ N: 만들 수 있는 장신구 Ai : 각각의 장신구를 만들면 누적되는 피로도 피로도가 200미마인 경우 장신구 제작 가능 현재 쌓인 피로도가 P일 대, 제작할 수 있는 장신구의 최대 개수는? """ p, n = map(int, input().split()) fatigue = list(map(int, input().split()))[:n] def solut..
문제 25644번: 최대 상승 미래를 예측하는 능력이 있는 정균이는 앞으로 $N$일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고 www.acmicpc.net 풀이 """ N일간의 주가 a1, a2, ..., an i번째 날에 주식을 사고 j번째 날에 판다면 aj - ai 만큼의 이득 최대 이득은? """ n = int(input()) stocks = list(map(int, input().split()))[:n] def solution(stocks): if len(stocks)
문제 2057번: 팩토리얼 분해 음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은 www.acmicpc.net 풀이 """ 음이 아닌 정수 N (0, 양의 정수) 서로 다른 정수 (M >= 1)개의 팩토리얼 합으로 나타낼 수 있는지 알아보는 프로그램 -> 0! = 1 """ import itertools n = int(input()) def solution(n): factories = [1] for i in range(1, 21): factories.append(factories[i - 1] * i) for i in range(1, len(fact..
문제 14655번: 욱제는 도박쟁이야!! 첫째 줄에 동전의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 둘째 줄에 욱제의 첫 번째 라운드의 N개 동전의 배열이 주어진다. 셋째 줄에 욱제의 두 번째 라운드의 N개 동전의 배열이 주어진다. 동전에 적 www.acmicpc.net 풀이 """ 동전의 양면에는 절대값이 같고 부호가 다른 정수가 한 면에 하나씩 쓰여있다. (동전끼리는 쓰인 수의 절댓값이 다를 수 있다. = 같을 수 있다.) 2번의 라운드 = 같은 동전으로 진행 N개의 동전 = 섞은 후 일렬로 배열 (앞뒤 방향 바뀔 수 있음.) 1라운드 - 최대가 되도록 뒤집기 2라운드 - 최소가 되도록 뒤집기 연속한 3개의 동전만 뒤집기 (동전 끝의 동전만 뒤집는 경우 가능 1개, 2개) => 동전을 뒤집는..
문제 2891번: 카약과 강풍 첫째 줄에 팀의 수 N, 카약이 손상된 팀의 수 S, 카약을 하나 더 가져온 팀의 수 R이 주어진다. (2 ≤ N ≤ 10, 1 ≤ S, R ≤ N) 둘째 줄에는 카약이 손상된 팀의 번호가 주어진다. 팀 번호는 중복되지 않 www.acmicpc.net 풀이 """ 체육복 문제와 동일 """ n, s, r = map(int, input().split()) damaged = list(map(int, input().split()))[:s] spares = list(map(int, input().split()))[:r] def solution(n, damaged, spares): teams = ['O'] * n # 카약이 손상된 팀 for value in damaged: teams..
문제 15720번: 카우버거 첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진 www.acmicpc.net 풀이 """ B, C, D가 각각 존재하는 경우 10% 할인 B: 버거의 개수 C: 사이드 메뉴 개수 D: 음료의 개수 최저가 출력 === example === 3 3 2 2000 3000 2500 800 1300 1000 500 1000 12100 11170 3000 + 1300 + 1000 => 5300 * 0.9 = 4770 2500 + 1000 + 500 => 4000 * 0.9 = 3600 2000 + 800 = 2800 ""..
문제 16208번: 귀찮음 현우는 무슨 이유에선지 길이 a1, ..., an의, 총 n개의 쇠막대가 필요해졌다. 하지만 그가 가진 것은 길이 a1+...+an의 하나의 쇠막대뿐이었다. 현우는 이 막대를 직접 잘라서 원래 필요하던 n개의 쇠 www.acmicpc.net 풀이 """ n개의 쇠막대 a1 + a2 + a3 + ... + an 하나의 쇠막대 x+y인 막대를 길이 x,y인 두 개의 막대로 자를 때에는 두 막대의 길이의 곱인 xy의 비용이 든다. 최소 비용은? === example === 4 3 5 4 2 => 총 14 5 9 = 45 4 5 = 20 3 2 = 6 """ n = int(input()) rods = list(map(int, input().split()))[:n] def solutio..
문제 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 풀이 """ J개의 사탕 상자에 포장 크기가 다른 상자 N개 / 최소한의 상자만 사용 (박스를 다 채울 필요는 없다.) T: 테스트 케이스 개수 j: 사탕의 개수 n: 상자의 개수 r: 세로 길이, c: 가로 길이 """ t = int(input()) def solution(j, boxes): answer = 0 boxes = sorted([a * b for a, b in boxes], reverse=True) total = 0 for box in boxes: i..
문제 1817번: 짐 챙기는 숌 첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책 www.acmicpc.net 풀이 """ 책은 차례대로 박스에 넣어야한다. n: 책의 개수 m: 박스에 넣을 수 있는 최대 무게 """ n, m = map(int, input().split()) weights = [] for _ in range(min(n, 1)): weights = list(map(int, input().split()))[:n] def solution(m, weights): if not len(weights): return 0 answer = 1..