그리디 알고리즘 Q www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net A 리스트를 오름차순으로 정렬하여 가장 뒤에 있는 큰 수를 기준으로 판단한다. n = int(input()) #입력받기 data = list(int(input()) for _ in range(n)) #여러 줄의 하나의 숫자를 리스트로 입력받기 data.sort() #오름차순으로 정렬 result = 0 for i in range(n): if data[-1]
그리디 알고리즘 Q www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net A 가장 큰 금액의 동전부터 계산한다. k = int(input()) #지불할 액수 입력받기 n = 1000 - k #1000엔에서 지불할 액수를 뺀 거스름돈 계산 result = 0 while n != 0: if n >= 500: result += n // 500 n = n % 500 elif n >= 100: result += n // 100 n = n % 100 e..
그리디 알고리즘 Q 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 A 가장 큰 금액부터 계산하기. n, k = map(int, input().split()) #n값과 k값 입력 a = list(int(input())for _ in range(n)) #여러 줄 입력받아서 정수형 리스트 생성 a.sort(reverse = True) #내림차순 정렬 result = 0 for d in a: if k..
그리디 알고리즘 Q www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net A n = int(input()) #입력받기 data = list(map(int, input().split())) #리스트 입력받기 data.sort() #오름차순으로 정리하기 time = [] #빈 리스트 선언 for i in range(n): time.append(sum(data[ : i + 1])) #sum함수를 이용하기. append이용하여 하나씩 넣기 print(sum(time))
그리디 알고리즘 Q www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net A 더 무거운 5킬로그램을 먼저 계산하기. n = int(input()) #입력 받기 k = 0 for i in range(n): #이중반복문 for j in range(n): if i * 5 == n: k = i break elif j * 3 == n and n
구현(Implementation)이란 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 어떤 문제를 풀든 간에 소스코드 작성과정에서 구현은 필수이므로 모든 범위의 코딩테스트 문제유형을 포함하는 개념이다. 완전탐색이란 모든 경우의 수를 주저없이 다 계산하는 해결방법을 의미한다. 시뮬레이션은 문제에서 제시한 알고리즘을 한단계씩 차례대로 직접 수행해야 하는 문제유형을 의미한다. 예제1 상하좌우 - 시뮬레이션 Q 여행가 A는 N X N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1X1크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위의 좌표는 (1,1)이며, 가장 오른쪽 아래의 좌표는 (N,N)에 해당한다. 여행가 A는 상,하,좌,우 방향으로 이동할 수 있으며, 시작좌표는 항상 (1,1)이다. 우리 앞에..