본문 바로가기
반응형

알고리즘/수학26

[백준][Python] 2824번 최대공약수 2824번: 최대공약수 첫째 줄에 N(1 ≤ N ≤ 1000)이 주어진다. 둘째 줄에는 N개의 양의 정수가 공백으로 구분되어 주어진다. 이 수는 모두 1,000,000,000보다 작고, N개의 수를 곱하면 A가 된다. 셋째 줄에 M(1 ≤ M ≤ 1000)이 www.acmicpc.net 코드 def gcd(n,m): while m>0: n,m = m, n%m return n n = int(input()) n_list = list(map(int,input().split())) m = int(input()) m_list = list(map(int,input().split())) n_num = 1 m_num = 1 for i in n_list: n_num *= i for i in m_list: m_num *=.. 2022. 9. 26.
[백준][Python] 9421번 소수상근수 9421번: 소수상근수 양의 정수 n의 각 자리수의 제곱의 합을 계산한다. 그렇게 해서 나온 합도 각 자리수의 제곱의 합을 계산한다. 이렇게 반복해서 1이 나온다면, n을 상근수라고 한다. 700은 상근수이다. 72 + 02 + 02 = www.acmicpc.net 코드 import math def prime(num): for i in range(2,int(math.sqrt(num))+1): if num % i == 0: return False return True def check(num): visit = {} while 1: n = str(num) num = 0 for i in range(len(n)): num += int(n[i]) ** 2 if num == 1: return True if num .. 2022. 9. 21.
[백준][Python] 2168번 타일 위의 대각선 2168번: 타일 위의 대각선 첫째 줄에 가로의 길이 xcm와 세로의 길이 ycm가 주어진다. x와 y는 1,000,000,000 이하의 자연수이다. x와 y사이에는 빈칸이 하나 이상 있다. www.acmicpc.net 코드 def gcd(x,y): if y > x: x,y = y,x while 1: if y == 0: break x,y = y, x%y return x x,y = map(int,input().split()) g = gcd(x,y) print(x+y-g) 설명 예전에 비슷한 문제를 풀어봐서 답을 구하는 식이 x + y - gcd(x,y) 였던 것이 생각났다. def gcd(x, y): for i in range(min(x, y), 0, -1): if x % i == 0 and y % i =.. 2022. 9. 19.
[백준][Python] 2553번 마지막 팩토리얼 수 2553번: 마지막 팩토리얼 수 첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다. www.acmicpc.net 코드 n = int(input()) ans = 1 for i in range(1,n+1): ans *= i ans = str(ans) for i in range(len(ans)-1,-1,-1): if int(ans[i]) != 0: print(ans[i]) break 설명 팩토리얼 계산 값 ans를 string형으로 변환한 후 뒤에서부터 하나씩 비교를 해서 0이 아닌 경우 해당 값을 출력해준다. string을 뒤집는 방법이 생각이 안나서 for문을 이용해서 뒤에부터 확인하는 방법을 썼다. ans = str(ans)[::-1] 구글링 해서 찾았는데 이제 기억이 났다. . . 2022. 9. 16.
반응형