반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 추천 시스템
- 인공지능
- Computer Vision
- 머신러닝
- 파이썬
- SGD
- C++
- 비용함수
- logistic regression
- Vision
- Unsupervised learning
- Kaggle
- cs231n
- 그래픽스
- OpenGL
- pre-trained
- 로지스틱 회귀
- Support Vector Machine
- CNN
- 백준
- Regularization
- recommender system
- petal to metal
- neural network
- 컴퓨터 비전
- 딥러닝
- 신경망
- SVM
- 컴퓨터 그래픽스
- CPP
Archives
- Today
- Total
kwan's note
백준 2981번 검문 파이썬 (python code) 본문
반응형
2981번
실버5
처음에는 for문을 최소화해서
for j in range(2,min(num[0]*2,num[1])-1):
for i in range(N):
의 이중 for문으로 풀었는데 log n정도의 시간복잡도임에도 시간초과로 풀리지가 않아 수학적으로 접근했다.
A=P1*Q+R
B=P2*Q+R
C=P3*Q+R
등의 형태로 나타나는 수를 구하는데
R을 없애기 위해서 abs(A-B), abs(B-C)등의 표현을 사용했고
이 식들의 gcd를 구함으로서 최종 gcd를계산했다.
gcd를 이용해 약수를 계산하는데
전체를 다 계산하는것이 아니라
sqrt(gcd)+1까지만 계산해 추가하는 방식으로 시간을 줄였다.
def div(x):
div_list = [x]
for i in range(2, int(x ** (1 / 2) + 1)):
if x % i == 0:
div_list.append(i)
if x // i != i:
div_list.append(x // i)
div_list.sort()
return div_list
따라서 결과코드는
import sys
import math
def div(x):
div_list = [x]
for i in range(2, int(x ** (1 / 2) + 1)):
if x % i == 0:
div_list.append(i)
if x // i != i:
div_list.append(x // i)
div_list.sort()
return div_list
N = int(sys.stdin.readline())
w = [int(sys.stdin.readline()) for _ in range(N)]
wd = [abs(w[i] - w[i + 1]) for i in range(N-1)]
if len(wd) == 1:
answer = wd[0]
else:
answer = wd[0]
for i in range(len(wd)):
answer = math.gcd(answer, wd[i])
for i in div(answer):
print(i, end=' ')
반응형
'Algorithm > python' 카테고리의 다른 글
백준 11758번 CCW 파이썬 (python code) (0) | 2021.01.17 |
---|---|
백준 1010번 다리놓기 파이썬 (python code) (1) | 2021.01.17 |
백준 2609번 최대공약수 최소공배수 파이썬 (python code) (0) | 2021.01.15 |
백준 1931번 회의실 배정 파이썬 (python code) (0) | 2021.01.15 |
백준 9251번 LCS 파이썬 (python code) (0) | 2021.01.15 |