RUBY

[백준] 숨박꼭질6 본문

PS/BOJ

[백준] 숨박꼭질6

RUBY_루비 2020. 10. 3. 20:51

출처::  https://www.acmicpc.net/problem/17087

분류:: gcd

 

1. 문제 이해 및 해결과정

- 문제가 이해가 안되서.. 오래걸렸다.. 
- ex1) 1 7 11 동생이 있고, 3이 현재 위치라면 2씩 이동하면 모든 동생을 찾을 수 있다.
- ex2) 33 105 57 동생이 있고,  81에서 2번이동하면, -24-24 = 33, 81에서  1번이동하면 105, 81에서 24씩 한번이동하면 57
- ex3) 1000000000에 동생이 있고 1에서 999999999만큼 이동하면 1000000000 이 된다
- 즉, 수빈이의 위치에서 각 동생까지의 거리 들 중 최대공약수를 찾으면 된다. 

 

2. 풀이방법

  1. 유클리드

#숨바꼭질 6
#https://www.acmicpc.net/problem/17087
import sys
sys.stdin = open("input.txt","r")
input=sys.stdin.readline
n,s=map(int,input().split())
brother=list(map(int,input().split()))
dis=[]
for i in range(n): #수빈이와 동생간의 거리 절대값 찾기
    dis.append(abs(s-brother[i]))
res=dis[0]
def gcd(a,b): #유클리드
    while a>0:
        a,b=b%a,a
    return b
for i in range(1,n):
    res=gcd(res,dis[i]) #모든 거리의 최대공약수 찾기
print(res)

 

3. 오답원인

 

4. 알게된 점

 

'PS > BOJ' 카테고리의 다른 글

[백준] 오르막 수  (0) 2020.10.04
[백준] 동물원  (0) 2020.10.03
[백준] 로또  (0) 2020.10.02
[백준] 모든 수열  (0) 2020.10.02
[백준] 합분해  (0) 2020.10.02
Comments