[파이썬] 백준 5585 : 거스름돈 https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 브론즈 2 그리디 알고리즘 접근 그리디 알고리즘의 가장 기본적인 문제이다. 거슬러야하는 돈을 단위가 큰 순서대로 리스트에 담고, 몫과 나머지를 적절히 활용하면 쉽게 구할 수 있다. 그리디 알고리즘은 최적의 해를 빠르게 구하기 위해 현재 상황에서 당장 좋은 것만 고르는 방법이다. 코드 풀이 import sys coins = [500, 100..
[파이썬] 백준 1837 : 암호제작 https://www.acmicpc.net/problem/1837 1837번: 암호제작 원룡이는 한 컴퓨터 보안 회사에서 일을 하고 있다. 그러던 도중, 원룡이는 YESWOA.COM 으로부터 홈페이지 유저들의 비밀키를 만들라는 지시를 받았다. 원룡이는 비밀 키를 다음과 같은 방법으로 www.acmicpc.net 브론즈 3 (이게 왜 브3??) 수학, 브루트포스, 큰 수 연산 접근방법 어떤수를 소인수분해하면 소수들의 곱으로 표현할 수 있다. 그 소수들 중 가장 작은 값이 K보다 작은지에 대한 여부를 확인해야 한다. 시행착오가 너무 많았다. p와 q가 소수라는 것 때문에 소인수분해를 하도록 했는데 시간초과가 계속해서 났다. 문제에서 요구하는 것은 입력받은 K값보다 작은 ..
[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 유클리드 호제법 A>B일때, A%B를 R이라고 할때, A와 B의 최대공약수와 B와 R의 최대공약수가 같다는 원리이다. A에 B를 대입하고 B에 R을 대입하는 과정을 반복하다보면 R=0이 되는 상황이 생기는데, 이때 B자리에 위치한 숫자가 바로 A와 B의 최대 공약수가 된다. def GCD(x, y): while y: x, y = y, x%y return x print(GCD(10, 12)) 2 y가 0이 아닌 수일때(참일 때) x, y = y, x%y는 계속해서 반복된다. x % y == 0이 되는 순간에 x%y은 y에 대입되므로 반복문의 조건을 만족하지 못해 빠져나오게 된다. x에는 y의 값이 대입되었으므로 x값을 반환함으로써 최대공약수..
[파이썬] 백준 3053 : 택시 기하학 https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 브론즈 3 수학, 기하학 접근 개념 이해를 위해 나무위키를 참조했다. https://namu.wiki/w/%ED%83%9D%EC%8B%9C%20%EA%B8%B0%ED%95%98%ED%95%99 격자 좌표계에서 파란 점이 중심이라 할때, 중심을 기준으로 거리가 2인 지점을 빨간 점으로 표시하면 왼쪽 그림과 같다. 일반적으로 중심을 기준으로 같은 거리를 표시하면 통상적인 원의 형태를..
[파이썬] 백준 9375 : 패션왕 신해빈 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 실버 3 수학, 자료 구조, 조합론, 해시를 사용한 집합과 맵 접근 두 개 이상의 사건이 동시에 일어나면 각각의 경우의 수를 곱해야 하며, 이를 곱의 법칙이라 한다. 3종류의 티셔츠와 2종류의 바지를 하나씩 골라 입을 수 있는 경우의 수는 티셔츠를 고를 수 있는 ..
[파이썬] 백준 1676 : 팩토리얼 0의 개수 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 실버 4 수학 접근 입력받은 값이 N일때, N!을 구하고 맨 마지막 수가 0일 때만 특정 변수의 값이 1씩 오르도록 하고 마지막에 그 변수의 값을 출력한다. 코드1 import sys, math N = int(sys.stdin.readline()) f = math.factorial(N) cnt = 0 while True: if f % 10 == 0: cnt += 1 f = f // 10 else: print(cnt) break math..