Python 65

그리디 알고리즘 Greedy

오늘은 그리디 알고리즘에 대하여 공부하였습니다.백준 알고리즘에서 그리디 알고리즘 문제를 풀어본적 있지만, 이론부터 알아가면 더욱 좋을 것 같네요.!그리디(Greedy)가 사전정의에 따르면, '탐욕스러운' 또는 '욕심 많은' 뜻이네요.알고리즘에서는 지금 당장 좋은 것만 고르는 방법으로 지칭하곤 하더라고요. 그리디 알고리즘에서 대표 문제로 '거스름돈' 문제를 풀어보겠습니다..! 거스름돈으로 사용할 500원, 100원, 50원, 10원 동전이 무한히 존재.손님에게 거슬러줘야 할 돈이 A원 일 때, 최소 동전 개수는? (A는 10의 배수) import sys# 입력값A = int(sys.stdin.readline())# 동전 종류 500 100 50 10coin = [500, 100, 50, 10]# 동전 개..

알고리즘 2021.12.22

collections (deque/Counter)

collections이라는 라이브러리에서는 deque와 Counter가 많이 쓰인다.dequedeque와 list의 차이점은 시간 복잡도이다.list의 경우는 앞쪽에 있는 값을 처리할 때 리스트 개수에 따라 시간이 많이 소요된다.앞쪽에 값을 추가/제거 할 경우 시간 복잡도는 O(N),뒤쪽에 값을 추가/제거 할 경우 시간 복잡도는 O(1)이 걸린다. deque는 슬라이싱, 인덱싱이 불가능하지만 데이터를 추가/삭제할 때는 매우 효과적이다.- popleft() : 리스트의 첫 번째 값을 제거- pop() : 리스트의 마지막 값을 제거- appendleft() : 리스트의 맨 앞에 값을 추가- append() : 리스트의 마지막에 값을 추가from collections import dequedata = dequ..

알고리즘 2021.12.21

파이썬(python) 17425번 약수의 합

문제 링크https://www.acmicpc.net/problem/17425 17425번: 약수의 합두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더www.acmicpc.net 처음에는 감을 잡을 수 없었으나 차근차근 패턴을 파악해보았다.f(6)은 6의 약수의 합 [1, 2, 3, 6], 답 12f(7)은 7의 약수의 합 [1, 7], 답 8 g(6)은 f(1)+f(2)+f(3)+f(4)+f(5)+f(6)을 뜻한다.1의 약수 12의 약수 1 23의 약수 1 34의 약수 1 2 45의 약수 1 56의 약수 1 2..

알고리즘 2021.12.21

파이썬(python) 2530번 인공지능 시계

문제 링크https://www.acmicpc.net/problem/2530 2530번: 인공지능 시계첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0www.acmicpc.net첫 코드 (오류)import sysA, B, C = map(int, sys.stdin.readline().split())D = int(sys.stdin.readline())min_ = D//60sec_ = D%60B = B+min_C = C+sec_if C >= 60: C -= 60 B += 1 if B >= 60: B = B%60 A = A..

알고리즘 2021.12.21