Algorithm

[백준알고리즘] 1193번 / 분수찾기

수노 SUNHO 2017. 10. 25. 17:47


내 코드

num = int(input())
up = []
down = []

for i in range(1, 10000001):
if i % 2 == 0:
# 짝수일 경우
up += [j for j in range(1, i+1)]
down += [j for j in range(i, 0, -1)]
else:
# 홀수일 경우
down += [j for j in range(1, i+1)]
up += [j for j in range(i, 0, -1)]

if len(up) >= num:
print(str(up[num-1])+'/'+str(down[num-1]))
break


아래와 같은 순서대로 배열의 분수에 번호가 매겨진다.

1 / 1

1 / 2

2 / 1

3 / 1

2 / 2

1 / 3

1 / 4

2 / 3

3 / 2

4 / 1

5 / 1

4 / 2

3 / 3

2 / 4


분자, 분모를 나눠서 보면

분자 

 1 2

 3 2 1

1 2 3 4 

 5 4 3 2 1

 홀수 차례일 때 역순으로 나열

 분모

2 1 

 1 2 3

4 3 2 1 

 1 2 3 4 5

 짝수 차례일 때 역순으로 나열

이와 같은 규칙을 찾을 수 있다.