반응형
무한히 큰 배열에서 X번째 분수는 어떤 분수 인가 찾는 문제.
대각선으로 줄을 하나씩 그어보면 각 줄의 개수가 1,2,3... 으로 증가하는게 보인다.
먼저 이 X가 몇번째 줄에 있는지 알아보기 위해 sum이라는 변수를 만들고, X가 sum보다 작아질때까지 while 문을 돌린다. line이라는 변수는 while 문이 몇번 돌아갔는지 (몇 번째 줄인지) 확인하기 위해 생성.
if (n > 1) 을 넣은 이유는 앞서 했던 벌집처럼 1이라면 무조건 1/1이 나오기때문에 제외하기 위해 넣었다.
while문을 빠져나오면 line이라는 변수에 이 X가 몇번째 줄인지 알려주는 수가 담겨져 있다.
이제 이 줄에서 몇번째 순서에 있는지 확인하기 위해 count라는 변수에 n -(sum-line) 값을 넣는다.
(이때 sum 은 X보다 큰 1~n까지의 합 중에서 가장 작은 수)
다만, 이 배열은 지그재그순서로 움직이기 때문에, 2번째 줄은 아래로, 3번째 줄은 위로, 다시 4번째는 아래로...
즉 짝수 줄이라면 아래로, 홀수 줄이라면 위로 올라가는 순서이다.
때문에 짝수 줄이라면 분자에 count가 들어가고, 분모에 line-count +1 이 들어가고, 홀수 줄이라면 그 반대가 된다.
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
백준알고리즘 #1978 소수찾기 Java (0) | 2020.03.13 |
---|---|
백준알고리즘 #10250 ACM호텔 java (0) | 2020.02.21 |
백준알고리즘 #2292 벌집 java (0) | 2020.02.17 |
백준알고리즘 #2839 설탕배달 java (0) | 2020.02.16 |
백준알고리즘 #1712 손익분기점 java (0) | 2020.02.16 |