MapleStory Finger Point

백준 알고리즘

백준 알고리즘 1193번 분수찾기 (파이썬)

吳鍾振 2022. 8. 14. 21:18

문제:

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.


# 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
#
# X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

# 1번 째 - 1
# 2번 째 - 2, 3
# 1/2 2/1
# 3번 째 - 4, 5, 6
# 3/1 2/2 1/3
# 4번 째 - 7, 8, 9, 10
# 1/4 2/3 3/2 4/1
# 5번 째 - 11, 12, 13, 14, 15
# 5/1 4/2 3/3 2/4 1/5

# 짝수 번호 째는 해당 번호가 분모에 해당되며 x+=1 / y-=1 이와 같은 순서가 된다
# 홀수 번호 째는 해당 번호가 분자에 해당되며 x-=1 / y +=1 와 같은 순서

x = int(input())

line_number = 0
count = 0
data_list = []

while line_number < x:
    count += 1
    line_number += count

# 요소를 출력하기 위해 data_list의 뒤에서 몇 번째인지 알기 위해 변수 선언
data = x - line_number

if count % 2 == 0:  # 짝수 번호 일 때
    for i in range(count):
        data_list.append(f'{i + 1}/{count - i}')
        # print('짝수 - ', data_list[data])

else:   # 홀수 번호 일 때
    for i in range(count):
        data_list.append(f'{count - i}/{i + 1}')
        # print('홀수 - ', data_list[data])

print(data_list[data - 1])

 

결과:

 

반응형