본문 바로가기
Python/백준

[Python] 백준 1193 분수찾기 - 기본 수학1(3)

by 푸_푸 2022. 9. 28.
728x90

백준 1193 분수찾기
문제

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

1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4
3/1 3/2 3/3
4/1 4/2
5/1

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

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

문제 해설

 

왼쪽 표의 나열된 분수들에게 지그재그 순서로 오른쪽 표의 숫자와 같이 번호가 주어진다

x가 주어졌을 때 분수를 구하면 된다. ex) x=5 →2/2

입력

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

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


제출

x=int(input())
l=0		#줄 번호 수 = 줄 안의 분수 개수(l=line)
c=0		#비교할 수(c=compare)
while x>c: 	#x가 비교할 수(c)보다 클 동안
    l+=1		#줄의 수(l)에 1을 더해준다
    c+=l		#비교할 수(c)에 줄의 수(l)을 더해준다
i=l+x-c-1 	#(i=index) 줄의 수(l)에 x-c-1한 값이 인덱스가 된다
if l%2==0:	#짝수인 경우
    a=1+i		#줄의 수(l)에 인덱스를 더한 수가 분자
    b=l-i		#줄의 수(l)에 인덱스를 뺀 수가 분모
else:		#홀수인 경우
    a=l-i		#줄의 수(l)에 인덱스를 뺀 수가 분자
    b=1+i   	#줄의 수(l)에 인덱스를 더한 수가 분모
print(f'{a}/{b}')	#분자/분모를 출력한다.

해설

줄의 수와 인덱스를 구해서 해당하는 분자/분모를 출력한다.
예제

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

14

 

결과

백준 1193 분수찾기

 

 

1193번: 분수찾기

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

www.acmicpc.net

 

728x90

댓글