반응형
문제설명
https://www.acmicpc.net/problem/17087
17087번: 숨바꼭질 6
수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이
www.acmicpc.net
사고과정
- 처음에 수빈이 위치인 S와 주어진 동생의 위치 간의 거리값을 구하고 이 거리값들 간의 최대공약수를 구하는 것 같다고 생각했었다. 그런데 갑자기 왜인지 모르게 그리디 방식으로 구현할 수 있을 것 같아 구현했는데 틀렸다는 판정이 나왔다..
- 최대공약수를 활용한 풀이는 처음에 수빈이 위치와 주어진 동생의 위치 첫 번째 간의 최대공약수를 초기 answer로 설정한다. 그리고 다음 동생 위치와 수빈이 위치 간의 거리와 answer간의 최대공약수를 구해서 또 업데이트 해준다. 이 때 '최대공약수'이기 때문에 앞에서 계산한 최대공약수를 뒤 숫자와의 최대공약수를 구하게 되면 어쩄건 총 3개 숫자간의 최대 공약수를 구하는 셈임을 잊지말자!
풀이(스스로 못 푼 풀이)
import sys
import math
input = sys.stdin.readline
n, s = map(int, input().split())
bros = list(map(int, input().split()))
answer = abs(s - bros[0])
for i in range(1, n):
answer = math.gcd(answer, abs(s - bros[i]))
print(answer)
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[BOJ] 17103번 - 골드바흐 파티션 (0) | 2021.10.27 |
---|---|
[BOJ] 1373번 - 2진수 8진수 (0) | 2021.10.27 |
[BOJ] 9613번 - GCD 합 (0) | 2021.10.27 |
[BOJ] 2004번 - 조합 0의 개수 (0) | 2021.10.27 |
[BOJ] 1676번 - 팩토리얼 0의 개수 (0) | 2021.10.26 |