문제 링크입니다: https://www.acmicpc.net/problem/14490
문자열을 적절히 처리하고 유클리드 호제법을 이용하여 최대공약수로 각각의 숫자를 약분하여 출력해주면 되는 문제였습니다.
#include <iostream>
#include <string>
using namespace std;
int GCD(int a, int b)
{
if (a%b == 0)
return b;
return GCD(b, a%b);
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
int N = 0, M = 0;
bool flag = false;
int digit = 1;
for (int i = s.length() - 1; i >= 0; i--)
{
if (s[i] == ':')
{
flag = true;
digit = 1;
}
else
{
if (!flag)
{
M += (s[i] - '0')*digit;
digit *= 10;
}
else
{
N += (s[i] - '0')*digit;
digit *= 10;
}
}
}
int gcd = GCD(N, M);
cout << N / gcd << ":" << M / gcd << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1850번 최대공약수 (0) | 2019.03.15 |
---|---|
백준 14891번 톱니바퀴 (0) | 2019.03.09 |
백준 2164번 카드2 (0) | 2019.03.07 |
백준 10773번 제로 (0) | 2019.03.07 |
백준 1011번 Fly me to the Alpha Centauri (2) | 2019.03.07 |