[백준] 1193번 분수찾기 / C++

#문제

백준 1193번 분수찾기

#풀이

#include <iostream>

using namespace std;

int main()
{
	ios::sync_with_stdio(false); cin.tie(NULL);

	int N;
	int i = 1;

	cin >> N;

	while (N > i)
	{
		N -= i;
		i++;
	}

	if (i % 2 == 1)
	{
		cout << i + 1 - N << '/' << N;
	}
	else
	{
		cout << N << '/' << i + 1 - N;
	}

	return 0;
}

#정리

i번째 대각선 내 원소의 수는 i개라는 조건에 착안하여 N이 i보다 크다면, N을 i만큼 빼주고 i를 증가시키는 방법으로 N의 위치를 알아낼 수 있었다. i를 구했다면 <i + 1 - N> 공식을 통해 대각선 위의 타겟 값을 구할 수 있는데, 대각선이 짝수면 i/1부터 시작하고, 홀수면 1/i부터 시작하기 때문에 최종적으로 얻은 i의 값에 따라 i + 1 - N의 위치를 조정하여 값을 도출할 수 있었다.




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • [백준] 1037번 최소공배수 / C++
  • [백준] 18258번 큐 2 / C++
  • [백준] 10866번 덱 / C++
  • [백준] 10815번 숫자 카드 / C++
  • [백준] 1002번 터렛 / C++