728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제에서 결과는 A와 B 길이의 최대공약수를 나타낸다.
즉, 3, 4의 최대공약수 1은 A(111)와 B(1111)의 최대공약수(1)의 길이로 나타내고
3, 6의 최대공약수 3은 A(111)와 B(111111)의 최대공약수(111)의 길이로 나타낸다.
위 규칙으로 해당 문제를 해결할 때는 최대공약수를 빠르게 계산할 수 있는 유클리드 호제법을 활용한다.
유클리드 호제법은 두 수의 최대공약수를 구하는 알고리즘으로 큰 수를 작은 수로 나누는 MOD 연산을 수행하고 해당 단계에서의 작은 수와 MOD 연산의 결괏값(나머지)으로 MOD를 수행한다.
위 과정을 반복하다가 나머지가 0이 되는 과정의 작은 수를 최대공약수로 선택하는 방법이다.
슈도코드
- A(A를 이루는 1의 개수), B(B를 이루는 1의 개수)
- 최대공약수를 유클리드 호제법으로 구하는 함수 gcd(a, b):
- if (b가 0이면): a가 최대공약수
- else: gcd( b, a % b)
- result(결괏값) = gcd(A, B)
- 결괏값 크기만큼 1을 반복해서 출력
반응형
3. 소스코드
import sys
A, B = map(int, sys.stdin.readline().split())
def gcd(a, b):
if (b == 0):
return a
else:
return gcd(b, a % b)
result = gcd(A, B)
print('1' * result)
728x90
반응형
'알고리즘 코딩테스트' 카테고리의 다른 글
[백준] 1707번 : 이분 그래프 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.02.06 |
---|---|
[백준] 1325번 : 효율적인 해킹 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.02.05 |
[백준] 18352번 : 특정 거리의 도시 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.02.02 |
[백준] 1033번 : 칵테일 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.02.01 |
[백준] 11689번 : GCD(n, k) = 1 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.30 |
[백준] 1016번 : 제곱 ㄴㄴ 수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.29 |
[백준] 1747번 : 소수&팰린드롬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.28 |
[백준] 1456번 : 거의 소수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.26 |