BOJ1193 - 분수찾기

CYSSSSSSSSS·2023년 7월 1일

알고리즘

목록 보기
69/83

문제1193

문제

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

해결

  • 문제의 핵심은 각 층 별로 표현 하는 방식이 다르다
  • 따라서 짝수 일떄와 홀수 일떄의 규칙을 찾아야 한다.
  • 짝수 일떄는 분모가 줄어들고 분자가 늘어나는 구조 이다.
  • 홀수 일떄는 분자가 줄어들고 분모가 늘어나는 구조 인 규칙을 활용하면 된다.
n = int(input())

floor = 0

max_num = 0

while n > max_num:
    floor += 1
    max_num += floor

gap = max_num - n


if floor % 2 == 0:
    a = floor - gap
    b = gap + 1

else:
    a = gap + 1
    b = floor - gap


print(f'{a}/{b}')
profile
개발자 되고 싶어요

0개의 댓글