본문 바로가기

코딩/Python

[Python] 백준 17087 숨바꼭질 6

반응형

코드 작성

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이고, 648의 최대공약수는 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