Baekjoon 1193 분수찾기
getNum=int(input()) number=1 totnum=0 while True: totnum=number*(number+1)/2 if totnum >= getNum: break number += 1 sub=int(totnum-getNum) if number %2 == 0: #짝수 시작 1/number 마지막 number/1 a,b=number-sub,1+sub else: #홀수 시작 number/1 마지막 1/number a,b=1+sub,number-sub result=str(a)+str('/')+str(b) print(result)
사람마다 다른 규칙을 찾을 수 있겠지만 제가 찾아낸 규칙은 대각선 규칙으로
왼쪽 모서리 첫 대각선은 1개 : 1/1
다음 대각선은 2개 : 1/2, 2/1
다음 대각선은 3개 : 3/1, 2/2, 1/3 순서로 지그재그를 간다는 것입니다.
어찌되었건 대각선의 숫자를 이용하여 while문을 돌리는데
총 합이 우리가 얻은 getNum보다 작을 때 비로소 그 때의 number를 받아서 우리가 원하는 작업을 취하는 형식을 할 생각으로 구현하였습니다.
물론 totnum=n(n+1)/2 는 등차수열 합공식에서 구한 것 입니다.
그리고 저는 totnum과 우리가 얻고자하는 차이를 이용해 result 값을 나타내었는데 이 때 지그재그가 짝수일 때는 시작 1/number 마지막 number/1이라는 점과
홀수일 때는 시작 number/1 마지막 1/number을 이용하여 값을 구했다는 점 알려드립니다.
ALL RIGHT RESERVED TWINSTARINFO