그리디 7

[프로그래머스] 택배 배달과 수거하기 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 더보기 내 코드 def solution(cap, n, deliveries, pickups): answer = 0 while deliveries and deliveries[-1] == 0: deliveries.pop() while pickups and pickups[-1] == 0: pickups.pop() while deliveries or pickups: a, b = cap, ..

프로그래머스 2023.07.28

[프로그래머스] 두 큐 합 같게 만들기 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 from collections import deque def solution(queue1, queue2): cnt = 0 q1 = deque(queue1) q2 = deque(queue2) q1_sum = sum(q1) q2_sum = sum(q2) for _ in range(int(len(q1)*3)): if q1_sum > q2_sum: q1_sum -= q1[0] q2_sum +=..

프로그래머스 2023.01.30

백준 11399번 ATM 파이썬

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 내 답안 N = int(input()) p = sorted(list(map(int, input().split()))) result = 0 while N != 0: result += p[len(p)-N] * N N -= 1 print(result) 인출이 가장 빠르게 되는 사람 순으로 정렬을 하는 게 핵심 아이디어이다. 예제로 주어진 문제를 풀어본다면 1 1+2 1+2+3 1+2+3+3 1+2+3+3+4 이런 식으로 나타낼 수 ..

BOJ/Python 2022.04.17

그리디 알고리즘 ( Greedy Algorithm ) 실전 문제 2 - Python

1이 될때 까지 어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N에서 K로 나눈다. 예를 들어 N이 17, K가 4라고 가정하자. 이때 1번의 과정을 한 번 수행하면 N은 16이 된다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 된다. 결과적으로 이 결우 전체 과정을 실행한 횟수는 3이 된다. 이는 N을 1로 만드는 최소 횟수이다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 입력조건 1. 첫째 줄에 N(2

Algorithm 2022.03.10

백준 1026번 보물 파이썬

https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 내 답안 N = int(input()) x = sorted(list(map(int, input().split()))) y = list(map(int, input().split())) y.sort(reverse = True) cnt = 0 for i in range(N): cnt += x[i]*y[i] print(cnt) 몇번생각을 해보다가 나온 결론은 x 는 오름 차순 정렬 y 는 내림 차..

BOJ/Python 2022.03.09

백준 11047번 동전 0 파이썬

https://www.acmicpc.net/problem/11047 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 = map(int, input().split()) coin = [] cnt = 0 for _ in range(n): coin.append(int(input())) coin.sort(reverse = True) for i in coin: if k >= i: cnt += (k // i) k %= i print(cnt) 그리..

BOJ/Python 2021.12.28