알고리즘/BOJ

백준 14490번 백대열

꾸준함. 2019. 3. 7. 15:47

문제 링크입니다: 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