[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 유클리드 호제법 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값을 반환함으로써 최대공약수..
https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 훨씬 간단한 방법이 있어서 기록한다. 내가 쓴 코드 import sys s = [] max = 0 index = 0 for i in range(9): s.append(int(sys.stdin.readline())) if max < s[i]: max = s[i] index = i+1 print(max) print(index) 남이 쓴 코드 l = [int(input(..
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문자열에서 단어는 공백으로 구분된다. 따라서 문자열 안에 있는 공백의 개수를 세거나, 문자열을 단어 단위로 나눠서 그 개수를 세는 방법으로 풀이가 가능하다. 1. 단어 단위로 나눠서 개수를 세는 방법 import sys s = sys.stdin.readline().split() sum = 0 for i in s: sum += 1 print(sum) 1 : s에 문자열을 입력 받고 공백을 기준..
https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 내 코드 mul = 1 for i in range(3): num = int(input()) mul *= num lst_mul = list(str(mul)) new_lst = [0]*10 for i in range(len(lst_mul)): new_lst[int(lst_mul[i]) % 10] += 1 for i in range(len(new_lst)): print(new_lst[i]) 3개의 값을 모두 곱한 값을 mul에 바인딩한다. mul의 값을 리..