
✔️ 수학적 규칙찾기
대각선 방향으로의 접근을 각 행으로 정리하면,
1행 - 1/1
2행 - 1/2 2/1
3행 - 3/1 2/2 1/3
4행 - 1/4 2/3 3/2 4/1
5행 - ...
이때, 아래와 같은 규칙이 성립한다.
몇 행인지 파악하기 ❔
→ 입력 값 x로부터 1부터 차례로 빼며 더이상 뺄 수 없을 때의 값을 구함
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
int a(0), b(0); // 출력 변수
// 대각선 행 체크(order)
// x는 각 행에서의 순서가 됨
int order(1);
while (x > order) {
x -= order++;
}
// 행이 짝수이면 오름차순 홀수이면 내림차순
int is_even = (order % 2 == 0);
if (is_even) {
a = x;
b = order - (x - 1);
}
else {
a = order - (x - 1);
b = x;
}
// 출력
cout << a << '/' << b;
}