본문 바로가기
코딩테스트/Beakjoon

백준 1193번 : 분수찾기 [Python]

by 나스나키 2023. 11. 18.
728x90

 

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

 

1193번: 분수찾기

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

www.acmicpc.net

 

 

문제 

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

 

 

입력

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

 
 
 

출력

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

 

 

예시

 

 

코드

num = int(input())

count = 0
n_count = 0
while n_count < num:
    count = count + 1
    n_count = n_count + count

i = n_count - num
F_num = 0
L_num = 0
if count % 2 == 0:
    F_num = count
    L_num = 1
    for ie in range(i):
        L_num = L_num + 1
        F_num = F_num - 1
else:
    F_num = 1
    L_num = count
    for ie in range(i):
        L_num = L_num - 1
        F_num = F_num + 1

print(str(F_num) + "/" + str(L_num))

 

 

코드 해석

  • num으로 수를 받는다.
  • 가로와 세로 중 어느 것에 더 가까운지와 두 수의 차를 알기위해 for 문을 돌린다.
  • 두 수의 차를 찾기위한 i을 구한다.
  • 부모와 분자를 넣을 수를 넣고 가로에 가까운지 세로에 가까운지에 따라 각각 부모 또는 분자에 count 값을 넣는다.
  • for 문을 통하여 부모와 분자를 구한다.
  • print 문으로 결과를 출력한다.

 

 

 
728x90