코딩 테스트/백준

백준 - [단계별로 풀어보기 수학1] 1193 분수 찾기

devrabbit22 2026. 3. 25. 03:46

이번 문제는 처음에 입력받은 값만큼 배열을 생성해, 해당 순서에 맞는 분수를 찾으려는 방식으로 접근했다. 하지만 시간 제한을 확인한 후 이 방법은 정답이 아니라는 확신과 함께 그만두게 되었다.

이후 지그재그 방향으로 이동하며 분수를 찾는 방법을 고민했지만, 규칙을 쉽게 파악하지 못해 결국 해설을 참고하게 되었다.

이 문제는 줄(i) 찾고, 줄 안에서 위치(N)로 분수 계산하는 것이다.

더보기

규칙

 

1번째 줄: 1개 → 1/1
2번째 줄: 2개 → 1/2, 2/1
3번째 줄: 3개 → 3/1, 2/2, 1/3
4번째 줄: 4개 → 1/4, 2/3, 3/2, 4/1

n번째 줄에는 n개 있음

 

  • 홀수 줄 → ↙ 방향 ( 홀수번째 대각선에서 아래로 증가 )
  • 짝수 줄 → ↗ 방향 ( 짝수번째 대각선에서 위로 증가 )

 

공식

홀수 줄

분자 = i + 1 - N
분모 = N
 

 

짝수 줄

분자 = N
분모 = i + 1 - N

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class math1
    {
        static void Main(string[] args)
        {
            //백준 1193 분수찾기
            int N = int.Parse(Console.ReadLine());

            int i = 1; // 현재 대각선(줄)의 번호
            while (N > i)
            {
                N -= i; // 해당 줄의 개수만큼 빼면서 N이 속한 줄을 찾음
                i++;    // 다음 줄로 이동
            }

            // i번째 줄에 도달했고, N은 그 줄에서의 위치가 됨
            // 각 줄에서 분자 + 분모 = i + 1

            if (i % 2 == 1) // 홀수 줄 (↙ 방향)
                Console.WriteLine((i + 1 - N) + "/" + N); // 분자 감소, 분모 증가
            else // 짝수 줄 (↗ 방향)
                Console.WriteLine(N + "/" + (i + 1 - N)); // 분자 증가, 분모 감소
        }
    }
}

출력 결과 1
출력 결과 2
출력 결과 5

이번 문제는 규칙을 찾는 것이 핵심이었지만, 처음에는 그 규칙을 쉽게 파악하지 못했다.

특히 지그재그로 이동하는 분수의 구조를 이해하는 과정에서 어려움을 느꼈고, 결국 해설을 참고하게 되었다. 해설을 보고 나서도 한 번에 완전히 이해되지는 않았지만, 문제를 여러 번 다시 보면서 점차 규칙을 파악하는 연습이 필요하다고 느꼈다.

아직은 이런 유형의 문제에 익숙하지 않지만, 비슷한 문제를 반복해서 풀다 보면 자연스럽게 익숙해질 것이라고 생각한다.


참고

https://codesyun.tistory.com/entry/BOJ%EB%B0%B1%EC%A4%80-1193%EB%B2%88-%EB%B6%84%EC%88%98%EC%B0%BE%EA%B8%B0-C-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4#%EA%B2%B0%EA%B3%BC-1-3

 

[BOJ/백준] 1193번 분수찾기 C++ 문제 풀이

단계별로 풀어보기 - 수학 1 단계 - [4단계] 1193번 문제 문제 링크 : www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 입력 복사 : 14 풀이 위 그림은 각

codesyun.tistory.com