그리디 알고리즘 74

백준(Python) 11508번 2+1 세일 풀이

Python으로 구현한 11508번 2+1 세일 문제 풀이입니다. https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net n = int(input()) data = [] for _ in range(n) : data.append(int(input())) data.sort(reverse=True) result = 0 count = 1 for i in data : if count % 3 != 0 : result += i count += 1 els..

백준(Python) 1758번 알바생 강호 풀이

Python으로 구현한 1758번 알바생 강호 문제 풀이입니다. https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net n = int(input()) data = [] for _ in range(n) : data.append(int(input())) data.sort(reverse=True) result = 0 for i in range(n) : value = data[i] - ((i+1)-1) if value > 0 : result..

백준(Python) 2847번 게임을 만든 동준이 풀이

Python으로 구현한 2847번 게임을 만든 동준이 문제 풀이입니다. https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net n = int(input()) score = [] result = 0 for _ in range(n) : score.append(int(input())) for i in range(n-1, 0, -1) : if score[i]

백준(Python) 1543번 문서 검색 풀이

Python으로 구현한 1543번 문서 검색 문제 풀이입니다. https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net s = input() target = input() result = 0 num = 0 while num

백준(Python) 13305번 주유소 풀이

Python으로 구현한 13305번 주유소 문제 풀이입니다. https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net n = int(input()) distance = list(map(int, input().split())) price = list(map(int, input().split())) result = 0 m = price[0] for i in range(n - 1) : if price[i] < m : m = price[i] re..

백준(Python) 12723번 Minimum Scalar Product (Small) 풀이

Python으로 구현한 12723번 Minimum Scalar Product (Small) 문제 풀이입니다. https://www.acmicpc.net/problem/12723 12723번: Minimum Scalar Product (Small) You are given two vectors v1=(x1,x2,...,xn) and v2=(y1,y2,...,yn). The scalar product of these vectors is a single number, calculated as x1y1+x2y2+...+xnyn. Suppose you are allowed to permute the coordinates of each vector as you wish. Choose two permuta www.a..

백준(Python) 11597번 Excellence 풀이

Python으로 구현한 11597번 Excellence 문제 풀이입니다. https://www.acmicpc.net/problem/11597 11597번: Excellence The World Coding Federation is setting up a huge online programming tournament of teams comprised of pairs of programmers. Judge David is in charge of putting teams together from the Southeastern delegation. Every student must be placed on exactly one team www.acmicpc.net n = int(input()) data = [] ..

백준(Python) 13238번 Bitcoin investment 풀이

Python으로 구현한 13238번 Bitcoin investment 문제 풀이입니다. https://www.acmicpc.net/problem/13238 13238번: Bitcoin investment Bitcoin is a digital asset and a payment system invented by Satoshi Nakamoto. It is not known whether the name "Satoshi Nakamoto" is real or a pseudonym, or whether the name represents one person or a group of people. It was once rumoured by New Yorker M www.acmicpc.net n = int(input..

백준(Python) 12034번 김인천씨의 식료품가게 (Large) 풀이

Python으로 구현한 12034번 김인천씨의 식료품가게 (Large) 문제 풀이입니다. https://www.acmicpc.net/problem/12034 12034번: 김인천씨의 식료품가게 (Large) 입력의 첫 번째 라인(줄)은 테스트 사례의 케이스의 수 T를 나타냅니다. 이후의 라인은 T개의 테스트 케이스가 이어집니다. 각 테스트 케이스는 두 줄로 구성됩니다. 첫 번째 줄에는 INU 식료품가 www.acmicpc.net t = int(input()) for tc in range(1, t + 1) : n = int(input()) data = sorted(map(int, input().split()), reverse=True) result = [] while data : price = data.p..

백준(Python) 23305번 수강변경 풀이

Python으로 구현한 23305번 수강변경 문제 풀이입니다. https://www.acmicpc.net/problem/23305 23305번: 수강변경 $2$번 학생과 $3$번 학생이 수업을 교환한 후, $3$번 학생이 교환한 수업을 $5$번 학생과 교환하게 되면 $2$/$3$/$5$ 번 학생이 원하는 수업을 수강할 수 있다. www.acmicpc.net n = int(input()) data = [0] * 1000001 for i in list(map(int, input().split())) : data[i] += 1 result = 0 for i in list(map(int, input().split())) : if data[i] >= 1 : data[i] -= 1 else : result += 1..