반응형
코드 작성
import math
n,s = map(int,input().split())
k = list(map(int,input().split()))
d = []
for i in k:
d.append(abs(i-s))
ans = d[0]
for i in d:
ans = math.gcd(i,ans)
print(ans)
코드 풀이
#0. 문제 풀이
이 문제는 수빈이의 위치 점 s부터 동생들의 위치 k에 대해 각각의 최대공약수d를 구하는 문제이다.
즉, (s-k[0]), (s-k[1]), (s-k[2]) 등 에 대해서 최대공약수를 구하는 문제이다.
#1. 거리를 d리스트에 입력
n(동생의 수), s(수빈이의 위치), 동생 위치(k)값을 입력받고
각각의 위치를 저장할 d의 리스트를 만든다.
각각의 위치 거리 차(k[i]-s)에 대해 절대값 함수 abs를 사용한 뒤 양수를 거리 d에 추가한다.
#2. 3개 이상의 수에 대한 최대공약수
d[0]의 값을 우선적으로 이용한 뒤 ans에 넣고 계속 ans와 비교한 뒤 다시 ans에 넣는 방식이다.
예를 들어 30, 24, 48의 최대공약수를 구하기 위해서 30, 24의 최대공약수는 6이고, 6과 48의 최대공약수는 6이다.
반응형
'코딩 > Python' 카테고리의 다른 글
[Python] 백준 1546 평균 (0) | 2022.11.27 |
---|---|
[Python] 백준 3052 나머지 (0) | 2022.11.27 |
[Python] 이스케이프 코드 (0) | 2022.11.20 |
[Python] 백준 1463 1로만들기 (0) | 2022.11.20 |
[Python] 10808 알파벳 개수 (0) | 2022.11.19 |