내 맴

[ BAEKJOON ] No. 1193 : 분수찾기 본문

Algorithm/Baekjoon 문제풀이

[ BAEKJOON ] No. 1193 : 분수찾기

뺙사우르수 2020. 3. 13. 21:56
728x90

문제 )

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

 

1193번: 분수찾기

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

www.acmicpc.net

 

 

풀이  )

 

 

대각선이 1개의 line이라고 하면 line별로 분수 나열해보기
[ 1/1 ] → [ 1/2, 2/1 ] → [ 3/1, 2/2, 1/3 ] → [ 1/4, 2/3, 3/2, 4/1 ] → ....

이때, num = 해당하는 line에서 뒤 분수가 몇개 있는지를 의미

Ex) 3/1의 경우  →  line=3, num=2

 

< 순서 >


1) line 구해주기
X - ( 1+2+3+....+n) → X가 0보다 작아질 때 까지 


2) 이때,
1+2+3+....+n = sumline 이라고 하고 , n= line이 됨
( sumline - X )은 num이 된다 

즉, 몇번째 줄=line , 몇번째 수인지 =sumline - X=num

Ex)  X=7인 경우, 
7-(1+2+3+4)해주면 0보다 작아진다. 
그러므로 line=4, sumline=10이 되고 
num=10-7=3이 된다 
그러므로 4번째 줄 → [ 1/4, 2/3, 3/2, 4/1 ] 에서
뒤에있는 분수갯수가 3개이므로 7번째 분수는 1/4이 된다
   

Ex) X=5인 경우,
5-(1+2+3)해주면 0보다 작아진다
그러므로 line=3 , sumline=6
num= 6-5=1
그러므로 3번째 줄에서  → [ 3/1, 2/2, 1/3 ] 에서
뒤에 있는 분수갯수가 1개이므로 5번째 분수는 2/2가 된다



3) 
If line=짝수면,
분자= line-num
분모=line+1-분자

else
분자=line+1-분모
분모=line-num

 

 

- python code

 

728x90