백준 - 분수찾기(1193)

유재우·2022년 4월 22일
0

문제

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

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(1 ≤ X ≤ 10,000,000)가 주어진다.
  • 출력
첫째 줄에 분수를 출력한다.
  • 예제 입력 1
1
  • 예제 출력 1
1/1
  • 예제 입력 2
2
  • 예제 출력 2
1/2
  • 예제 입력 3
3
  • 예제 출력 3
2/1
  • 예제 입력 4
4
  • 예제 출력 4
3/1
  • 예제 입력 5
5
  • 예제 출력 5
2/2
  • 예제 입력 6
6
  • 예제 출력 6
1/3
  • 예제 입력 7
7
  • 예제 출력 7
1/4
  • 예제 입력 8
8
  • 예제 출력 8
2/3
  • 예제 입력 9
9
  • 예제 출력 9
3/2
  • 예제 입력 10
14
  • 예제 출력 10
2/4

  • 정답
n = int(input())
line = 0
end = 0
while n > end:
    line += 1
    end += line
diff = end - n
if line%2 == 0: #짝수 라인 일때
    top = line - diff
    bottom = diff + 1
else:
    top = diff + 1
    bottom = line - diff
print("%d/%d"%(top,bottom))
  • 못 푼 이유
지그재그 순서의 규칙이 이해가 되질 않았고 홀수와 짝수를 나눠서 생각하질 못하여 접근이 어려웠다.

참고한 블로그 링크

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글