내 코드
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 |
1 2 |
3 2 1 |
1 2 3 4 |
5 4 3 2 1 | 홀수 차례일 때 역순으로 나열 |
분모 |
1 |
2 1 |
1 2 3 |
4 3 2 1 |
1 2 3 4 5 | 짝수 차례일 때 역순으로 나열 |
이와 같은 규칙을 찾을 수 있다.
'Algorithm' 카테고리의 다른 글
위쪽과 왼쪽에 곱하는 수가 있는 곱셈표(구구단) 출력하기 (0) | 2019.03.26 |
---|---|
[백준알고리즘] 2292번 / 벌집 (Python3/파이썬) (1) | 2017.10.24 |
[백준알고리즘] 2438번 / 별찍기 - 1 (Python3/파이썬) (0) | 2017.10.17 |
[백준알고리즘] 5622번 / 다이얼 (Python3/파이썬) (0) | 2017.10.13 |
[백준알고리즘] 2908번 / 상수 (python3) (0) | 2017.10.12 |