728x90

https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
문제
무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
출력
첫째 줄에 분수를 출력한다.
예시

코드
num = int(input())
count = 0
n_count = 0
while n_count < num:
count = count + 1
n_count = n_count + count
i = n_count - num
F_num = 0
L_num = 0
if count % 2 == 0:
F_num = count
L_num = 1
for ie in range(i):
L_num = L_num + 1
F_num = F_num - 1
else:
F_num = 1
L_num = count
for ie in range(i):
L_num = L_num - 1
F_num = F_num + 1
print(str(F_num) + "/" + str(L_num))
코드 해석
- num으로 수를 받는다.
- 가로와 세로 중 어느 것에 더 가까운지와 두 수의 차를 알기위해 for 문을 돌린다.
- 두 수의 차를 찾기위한 i을 구한다.
- 부모와 분자를 넣을 수를 넣고 가로에 가까운지 세로에 가까운지에 따라 각각 부모 또는 분자에 count 값을 넣는다.
- for 문을 통하여 부모와 분자를 구한다.
- print 문으로 결과를 출력한다.

728x90
'코딩테스트 > Beakjoon' 카테고리의 다른 글
| 백준 1259번 : 팰린드롬수 [Python] (0) | 2023.11.18 |
|---|---|
| 백준 1212번 : 8진수 2진수 [Python] (0) | 2023.11.18 |
| 백준 1181번 : 단어 정렬 [Python] (2) | 2023.11.18 |
| 백준 1110번 : 더하기 사이클 [Python] (2) | 2023.11.18 |
| 백준 1152번 : 단어의 개수 [C++] (0) | 2023.10.09 |