알고리즘/수학

[백준]1850 최대공약수 #유클리드호제법#pypy

씩씩한 IT블로그 2020. 6. 17. 21:39
반응형

1. 풀이

(1) 1만으로 구성된 두 숫자 a,b의 최대공약수 c도 1만으로 구성됨.

(2) 이때 a의 1의개수,b의 1의개수의 최대공약수 = c의 1의개수

(3) 속도관련(곱하기로표현, 포문쓰기, int로 출력)

-

곱하기로표현(소스코드1)

포문쓰기(소스코드2)

포문+int로 출력(소스코드3)

pypy

통과

시간초과

시간초과

python

통과

통과

시간초과


- 곱하기로 표현
(소스코드1)

print("1"*N)

 

-포문쓰기 (소스코드2)

ans=""
for i in range(N):
    ans+="1"
print(ans)

 

- int로 출력 (소스코드3)

ans=""
for i in range(N):
    ans+="1"
print(int(ans))

 

2. 소스코드

(1) 소스코드1

a,b=map(int,input().split())

def euclidean(a,b):
    if b==0:
        return a
    else:
        return euclidean(b,a%b)

print("1"*euclidean(a,b)) //곱으로표현

 

(2) 소스코드2

a,b=map(int,input().split())

def euclidean(a,b):
    if b==0:
        return a
    else:
        return euclidean(b,a%b)

//포문으로 표현
num=euclidean(a,b)
ans=""
for _ in range(num):
    ans+="1"

print(ans)

 

(3) 소스코드3

a,b=map(int,input().split())

def euclidean(a,b):
    if b==0:
        return a
    else:
        return euclidean(b,a%b)

num=euclidean(a,b)
ans=""
for _ in range(num):
    ans+="1"

print(int(ans)) //포문+인트로 출력
반응형