지그재그 모양으로 놓여 있는 분수들의 배열에서 입력받은 수 번째의 분수를 출력한다.
#include <iostream>
using namespace std;
int main()
{
int x; // 입력
cin>>x;
int count=0; // 지그재그의 순서
while(x>0) // x = 떨어져 있는 거리
{
count++;
x-=count;
}
if(count%2==0) // 짝수면 분자가 증가
{
cout << count+x << "/" << 1-x;
}
else // 홀수면 분모가 증가
{
cout << 1-x << "/" << count +x;
}
}
코드는 https://codingplus.tistory.com/124 를 참조하여 작성되었다.
지그재그의 순서에 따라 분모와 분자의 증감이 결정되므로, 입력받은 값이 어떤 순서에 있는지 파악해야 한다.
그림 출처 = https://nhs0912.tistory.com/56
위 그림을 보면,
각 줄의 맨 오른쪽에 있는 숫자가 홀수냐 짝수냐에 따라 분모가 증가하고 분자가 감소하는 경우가 있고, 분자가 증가하고 분모가 감소하는 경우가 있다.
이를 이용해 지그재그의 순서를 구하고, 한 지그재그 순서의 마지막 번째가 되는 분수로부터 얼마나 떨어져 있는지 (예시: 1/4는 1/4->2/3->3/2->4/1 순서의 마지막인 4/1로부터 3만큼 떨어져 있다)를 이용해 출력값을 구한다.
지그재그 순서에 따라 분모 분자의 증감세를 알아내야 한다.