yewoneeee 2022. 8. 10. 22:40

# 문제

# 입력 및 출력

# 풀이

기약 분수 형태로 출력해야 하기 때문에 최대공약수를 구해야 한다

최대 공약수를 구하기 위해 유클리드 호제법을 사용했음

https://kangworld.tistory.com/184

 

[코딩 팁] 최대공약수 : 유클리드 호제법 원리

✍️ 최대공약수와 유클리드 호제법 코딩 테스트에서 심심치 않게 등장하는 최대공약수 구하기 2부터 시작하는 반복문으로 구할 수 있지만 유클리드 호제법을 사용하면 보다 효율적으로 구할

kangworld.tistory.com

위 블로그 참고

 

#include <iostream>
using namespace std;

int gcd(int first, int r) {
	int b, s, mod;
	if (first < r) b = r, s = first;
	else b = first, s = r;
	while (1) {
		mod = b % s;
		if (!mod) break;
		b = s;
		s = mod;
	}
	return s;
}

int main() {
	int n, first, r;
	cin >> n >> first;
	for (int i = 0; i < n - 1; i++) {
		cin >> r;
		int mod = gcd(first, r);
		cout << first / mod << "/" << r / mod << "\n";
	}
}

처음에 제출했을 땐 큰 수도 작은수로 변경을 해줘야하는지 모르고 작은 수만 나머지로 변경을 해준 상태였다

그래서 두번 틀렸다ㅋㅋ

 

유클리드 호제법은 처음 들어보는데 매우 간단한 알고리즘으로 유용하게 쓰일 것 같다