wau2380's playground

[백준/BaekJoon] 1193번 : 분수찾기(파이썬) 본문

Algorithm/백준 단계별로 풀어보기

[백준/BaekJoon] 1193번 : 분수찾기(파이썬)

wau2380 2021. 9. 5. 23:47

문제

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

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에서 분자를 뺀 값이 바로 분모입니다.

코드

n = int(input()); i = 1
while n > i: #i번째 줄 구하기
    n -=i
    i+=1

if i%2 == 1:
    print(f"{i+1-n}/{n}")
else:
    print(f"{n}/{i+1-n}")