Processing math: 100%
본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 1193번: 분수찾기 -C++

728x90

[백준알고리즘] 1193번: 분수찾기 -C++

1193번: 분수찾기 (acmicpc.net)

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

각 대각선 방향마다 step이라 정해주었다. 각 step에서 분자와 분모의 합은 같다.

 

짝수 step과 홀수 step이 다른 점은 짝수 step에서는 1/step에서 step/1 로 점점 분자는 1씩 증가하고 분모는 1씩 감소하게 된다. 반대로 홀수 step에서는 step/1에서 1/step로 점점 분자는 1씩 감소하고 분모는 1씩 증가하게 된다.

 

하지만 각 단계에서 total이 각 step의 마지막 값을 기준으로 구했기 때문에 x가 있는 step의 맨 뒤의 값(짝수일 경우 step/1, 홀수일 경우 1/step에서 반대로 찾아주었다.

 

#include <iostream>

int main(void)
{
    int x;
    std::cin >> x;

    int total, step;
    total = step = 0;
    while (total < x)
    {
        step++;
        total += step;
    }

    int distance, dividend, divisor;
    distance = total - x;
    if (step % 2)
    {
        dividend = 1 + distance;
        divisor = step - distance;
    }
    else
    {
        dividend = step - distance;
        divisor = 1 + distance;
    }

    std::cout << dividend << "/" << divisor;
}

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90