이전 풀이
https://dmaolon00.tistory.com/16
a = int(input()) # 입력 받은 수
cnt = 0
cross = 1
while True:
b = a - cnt # 새 대각선에서 입력받은 수가 몇 번째인지 확인
cnt += cross # 총 개수
if a <= cnt: # 총 개수보다 입력받은 수가 작다면, 해당 대각선 중에 위치함을 의미
if cross % 2 == 1:
x = cross
y = 1
for _ in range(b - 1):
x -= 1
y += 1
elif cross % 2 == 0:
x = 1
y = cross
for _ in range(b - 1):
x += 1
y -= 1
print(x, end="/")
print(y)
break
cross += 1
해보다가 좀 안되서 다른 분들 코드 스을쩍 봤다,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
이렇게 입력 받을 수에서 직전 대각선까지의 수를 빼주어 현재 대각선에서 어느 위치에 있는지를 파악해준 후, 분모와 분자를 구해주었다.
그리고 이전 풀이를 살펴보니 굳이 직전 대각선까지의 수를 구해줄 필요가 없었다는 것을 알게 되었다.
그냥 지금 대각선까지의 수에서 입력받은 수를 구해주고 분모 분자를 구해줄 수도 있었다..ㅎㅎㅎ
a = int(input())
cross = cnt = 1
while a > cnt:
cross += 1
cnt += cross
gap = cnt - a
if cross % 2 == 0:
x = cross - gap
y = gap + 1
elif cross % 2 == 1:
x = gap + 1
y = cross - gap
print(x, end="/")
print(y)
참고한 사이트!)
https://st-lab.tistory.com/74
반응형