[1193] 분수찾기

RudinP·2023년 4월 4일
0

BaekJoon

목록 보기
14/77

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.
이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

입력

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

출력

  • 첫째 줄에 분수를 출력한다.

생각

분모는 1, 1 2, 1 2 3, 1 2 3 4, 1 2 3 4 5
분자는 1, 2 1, 3 2 1, 4 3 2 1, 5 4 3 2 1

  • x번째일 때, k의 값 구하기
  • 분모 + 분자 = k+1 -> 분자를 구한 후, k+1 에서 분자를 빼면 된다. (분모와 분자 방향 반대)
  • 홀수번째 대각선에서는 분자가 아래로 증가
  • 짝수번째 대각선에서는 분자가 위로 증가.

참고

첫시도


namespace SongE
{
    public class Program
    {
        static void Main(string[] args)
        {
            int x = int.Parse(Console.ReadLine());

            int k = 1;
            while(x > k)
            {
                x -= k;
                k++;
            }
            
            int parent; 
            int child;

            if(k % 2 == 1)
            {
                parent = x;
                child = k + 1 - x;
            }
            else
            {
                parent = k + 1 - x;
                child = x;
            }
            Console.WriteLine($"{child}/{parent}");
        }
    }
}

profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글