https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

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

www.acmicpc.net

#전체 코드

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
public class Program
{
    public static void Main()
    {
        int input = int.Parse(Console.ReadLine());

        int nd=0,nm=0,nDemo=1,nMole=0,ndCount=0,nmCount=0;
        

        //input이 1일때의 예외상황을 추가해주자
        if(input == 1)
        {
            Console.WriteLine("1/1");
        }
        else
        {
            while (ndCount < input)
            {


                if (nd == 0) //첫번쨰항인 1을 추가해주자
                {
                    ndCount++;
                    //Console.WriteLine("{0}!! nd", nd+1);
                }
                if (nd == 1)//끝나고 시작할때 부족한 1을 추가해주자
                {
                    ndCount++;
                    //Console.WriteLine("{0}!! nd", nd);
                }


                nDemo += 2;


                while (nd < nDemo)
                {
                    if (ndCount == input)
                    {
                        break;
                    }
                    nd++;
                    ndCount++;

                    //Console.WriteLine("{0}// nd {1} //ndCount", nd,ndCount);
                }
                while (nd > 1)
                {
                    if (ndCount == input)
                    {
                        break;
                    }
                    nd--;
                    ndCount++;
                    //Console.WriteLine("{0}// nd {1} //ndCount", nd, ndCount);
                }



            }

            while (nmCount < input)
            {

                if (nm == 1) //첫번째항 보충할 필요없이 끝날때의 1만 추가해주자
                {
                    nmCount++;
                    //Console.WriteLine("{0}!! nm", nm);
                }

                nMole += 2;

                while (nm < nMole)
                {
                    if (nmCount == input)
                    {
                        break;
                    }
                    nm++;
                    nmCount++;
                    //Console.WriteLine("{0}]] nm", nm);
                }
                while (nm > 1)
                {
                    if (nmCount == input)
                    {
                        break;
                    }
                    nm--;
                    nmCount++;
                    //Console.WriteLine("{0}]] nm", nm);
                }

            }



            if (ndCount >= input && nmCount >= input)
            {
                Console.WriteLine("{0}/{1}", nd, nm);
                //Console.ReadKey();
            }
        }
        //Console.ReadKey();

        


    }
}

'[백준] > C#' 카테고리의 다른 글

백준 1152번 단어의 개수 [C#]  (0) 2023.08.05
백준 1110번 더하기 사이클 [C#]  (0) 2023.08.05
백준 1065번 한수 [C#]  (2) 2023.08.05

+ Recent posts