브론즈 문제 치곤 상당히 많이 고민했던 문제입니다.
다들 어떤 식으로 고민해서 푸는지는 모르겠지만, (1/1)-(1/2,1/2)-(3/1,2/2,1/3)-... 이런식으로 계속해서 숫자가 이어져 나가고 있을 때 몇 번째의 값을 구하는지 문제에서 주면 답을 찾아 주어야 하는 문제입니다.
생각했던 과정은
- 1,2,3 계속해서 1씩 늘어나는 숫자를 생각했을 때 2,3,4 순으로 분자+분모 값의 합이 나온다.
- 그러면 등차수열 처럼 값을 늘려서 계산해주면 되겠네
- 하지만 중간에 분자+분모 값이 홀수 인지 짝수인지에 따라서 분수의 순서가 달라진다.
- 그러면 그거는 2로 나눠서 나머지를 확인하면 되겠네
- 몇 번째 인지는 어떻게 생각을 해줄껀가를 고민했을 때, 저의 경우에는 (1/1)이나 (1/2,2/1) 처럼 대각선으로 한팀으로 생각했었고, 그 팀에서 몇 번째인지를 구할 수 있도록 계산 했었습니다.
n = int(input()) #몇 번째 분수인지
count = 1
max_n = 1
max_b = 0
while 1:
# print(n,max_n)
if n <= max_n:
# print(max_n)
k = count+1
n = n-max_b
# print(k,n)
# print(count)
break
count += 1
max_b = max_n
max_n += count
# print(max_n)
check = 0
if k%2 == 0:
for i in range(1,k):
check += 1
# print(check)
if check == n:
print("%d/%d" %(k-i,i))
if k%2 != 0:
for i in range(1,k):
check += 1
# print(check)
if check == n:
print("%d/%d" %(i,k-i))
'DEV > 알고리즘 문제 풀이' 카테고리의 다른 글
알고리즘 다시 공부하기 1일차 (0) | 2022.09.07 |
---|---|
[백준] 17298번 with Python (아직 못품) (0) | 2022.04.13 |
꾸준히 다시 공부하기 (0) | 2022.01.15 |
[백준] 1712번 손익분기점 with python (0) | 2021.06.27 |