[백준] 1193: 분수찾기 (자바)

이지혁·2024년 11월 9일

백준

목록 보기
7/19



비정방형 배열로 바꾸어보면

arr[0] : 1/1

arr[1] : 1/2 2/1

arr[2] : 3/1 2/2 1/3

arr[3] : 1/4 2/3 3/2 4/1

arr[4] : 5/1 4/2 3/3 2/4 1/5

...

규칙 1 : 각 공간의 크기는 1씩 증가한다.

규칙 2 : 짝수번째 배열은 큰 수가 먼저 등장한다.

규칙 3 : 분자와 분모가 서로 반대 방향으로 1씩 크기가 변한다.

주어진 N으로 먼저 몇 번째 배열인지 찾으려고 시도했다.

n(n+1)/2 = N 이니까 역으로 진행하면 찾을 수 있지 않을까 라는 생각이 들었다. [규칙 1]

정수로 바꿔줘야 하지만, 소숫점 자리를 올림 처리하여 n 번째 배열임을 찾았다.

그 다음 arr[n]의 몇 번째 순서를 출력해야 하는지 찾기 위해 N - n(n - 1)/2을 해주었다.

n-1 번째까지의 모든 순서를 구하고 N에서 빼서 n번째 배열에서 몇 번째 순서인지를 offset에 저장했다.

1부터 시작하는 i와 n 부터 시작하는 j를 i가 offset과 같아질 때 까지 반복했다.

마지막으로 짝수와 홀수의 경우를 구분하여 출력하며 마무리했다. [규칙2, 3]

0개의 댓글