1. 자료구조 자료구조(Data Structure)란 데이터를 표현, 관리, 처리하기 위한 구조를 의미한다. 스택(Stack)은 박스 쌓기에 비유할 수 있다. 후입선출 구조이다. 따라서 기본 리스트에서 append()와 pop()을 이용하면 스택 자료구조와 동일하게 동작한다. 큐(Queue)는 대기줄에 비유할 수 있다. 선입선출 구조이다. 따라서 collections 모듈에 있는 deque 라이브러리를 활용하여 append()와 popleft()를 사용하여 동작할 수 있다 deque 객체를 리스트 자료형으로 변경하고자 한다면 list() 메서드를 이용하면 된다. 2. 재귀함수(Recursive Function) 재귀함수(Recursive Function)란 자기 자신을 다시 호출하는 함수를 의미한다. e..
그리디 알고리즘 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..