티스토리 뷰
728x90
반응형
문제 요약
- 알고리즘 분류: 유클리드 호제법
- 난이도: Silver1
- 문제내용:
- A, B 1의 개수가 주어지면 A, B의 최대 공약수를 구해라
- 사이트 주소: https://www.acmicpc.net/problem/1850
문제 풀이
이번 문제는 유클리드 호제법이다. 유클리드 호제법에 대한 설명은 여기에서 확인해보면된다. 하지만 1의개수가 최대 억이상 갈수 있어서 일반적인 유클리 호제법으로 풀다가는 메로리 초과와 시간 초과 나올수 있기 때문에 다른 방법으로 풀어야한다.
문제 접근 방법
위 2의 63승까지 범위이면 자리수만 해도 터무니없느 숫자이다. 그래서 각 1의 개수를 최대공약수를 구하지 말고 A B의 수를 최대 공약수를 구해서 1을 최대 공약수 만큼 곱하면 답이 나온다.
Code
Python
import math
A, B = map(int, input().split())
print("1" * math.gcd(A, B))
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
long A = Long.parseLong(st.nextToken());
long B = Long.parseLong(st.nextToken());
StringBuilder sb = new StringBuilder();
for(int i = 0; i < gcd(A, B); i++) {
sb.append("1");
}
System.out.println(sb);
}
public static long gcd(long x, long y) {
if(y == 0) {
return x;
}
return gcd(y, x % y);
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[BAEKJOON]11052 카드 구매하기 (0) | 2023.02.09 |
---|---|
[BAEKJOON]7562 나이트의 이동 (0) | 2023.02.08 |
[BAEKJOON]11057 오르막 수 (0) | 2023.02.04 |
[BAEKJOON]24445 알고리즘 수업 - 너비 우선 탐색 2 (0) | 2023.02.03 |
[BAEKJOON]24444 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2023.02.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 수학
- DFS
- BaekJoon
- 동적 계획법
- Python
- LeetCode
- DP
- 재귀호출
- 문자열
- 누적합
- 알고리즘
- 백준
- 동적계획법
- java
- 이론
- 배열
- 넓이 우선 탐색
- 조합
- 백트레킹
- BFS
- Programmerse
- Greedy
- JSCODE
- level2
- 그리디
- 파이썬
- spring-boot
- 구현
- 그래프
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함