728x90
[백준알고리즘] 1193번: 분수찾기 -C++
각 대각선 방향마다 \(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
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2581번: 소수 -C++ (0) | 2021.01.17 |
---|---|
[백준알고리즘] 2775번: 부녀회장이 될테야 -C++ (0) | 2021.01.17 |
[백준알고리즘] 2292번: 벌집 -C++ (0) | 2021.01.17 |
[백준알고리즘] 2941번: 크로아티아 알파벳 -C++ (0) | 2021.01.16 |
[백준알고리즘] 2908번: 상수 -C++ (0) | 2021.01.16 |