백준문제풀이 8단계 일반 수학 1(6) 1193번 분수찾기 (C#)

2024. 6. 17. 21:06백준 문제풀이/8단계 일반 수학 1

 

이런식으로 나열된 배열에서 지그재그 순서로 분수를 카운트 할때 X번째에 있는 분수를 출력하는 문제.

 

먼저 지그재그 순서로 생각해보면

1/1

1/2 , 2/1

3/1 , 2,2 , 1/3

1/4 , 2/3 , 3/2 , 4/1

같이 된다.

 

잘 살펴보면 홀수 줄은 분자가 감소하며 분모가 증가한다.

반대로 짝수줄은 분자가 증가하고 분모가 감소한다.

 

이를 이용해서 반복문으로 만들어주면...

 

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        int X = int.Parse(Console.ReadLine());
        int line = 1, count = 0;
        while (true)
        {
            if (X <= count + line)
            {
                if (line % 2 == 1)
                    Console.WriteLine("{0}/{1}", (line - (X - count - 1)), (X - count));
                else
                    Console.WriteLine("{0}/{1}", (X - count), (line - (X - count - 1)));
                break;
            }
            else
            {
                count += line;
                line++;
            }
        }
    }
}

 

Line 1번 부터 시작해서 반복할때마다 count에 더해주자.

 

예를 들어 X가 10이라면 line은 4이고 count는 6이다.

짝수줄이니까 분자는 10-6 = 4

분모는 4-(10-6-1) = 1

X가 10일때  > 4/1